Simple database: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) m (→{{header|11l}}: new way of specifying file open mode) |
(Applesoft BASIC) |
||
Line 125: | Line 125: | ||
=={{header|BASIC}}== |
=={{header|BASIC}}== |
||
==={{header|Applesoft BASIC}}=== |
|||
This program relies on DOS 3.3 to read and write the simple database as a text file on disk. Running the program with no options displays help on how to run the program with the various options. |
|||
<syntaxhighlight lang="gwbasic"> 10 FOR I = 0 TO 255:C = PEEK (512 + I):EOL = C = 0 OR C = 141: IF NOT EOL THEN C$ = C$ + CHR$ (C): NEXT I: STOP |
|||
20 DOS = (C = 141) * 128:AC = 0: FOR C = I - 1 TO 0 STEP - 1: IF PEEK (512 + C) = ASC (",") + DOS THEN AC = AC + 1: NEXT C |
|||
30 D$ = CHR$ (4):M$ = CHR$ (13): READ P$,C$(1),C$(2),C$(3),C$(4):F$ = P$ + ".TXT": ON AC GOTO 100,40,40,40: GOTO 500USAGE |
|||
40 C = 0: PRINT D$"OPEN "F$: PRINT D$"READ "F$ |
|||
50 ONERR GOTO 80 |
|||
60 INPUT "";NA$,GE$,DA$ |
|||
70 C = C + 1: GOTO 60 |
|||
80 POKE 216,0: IF PEEK (222) = 5 THEN PRINT D$"CLOSE "F$: ON AC GOTO 100,200,300,400 |
|||
90 RESUME |
|||
REM ADD |
|||
100 PRINT M$C$(AC)M$ |
|||
110 INPUT " NAME: ";NAME$ |
|||
120 INPUT " GENRE: ";GENRE$ |
|||
130 INPUT "DATE YYYY-MM-DD: ";DA$ |
|||
140 PRINT D$"OPEN "F$: PRINT D$"APPEND "F$: PRINT D$"WRITE "F$: PRINT NAME$","GENRE$","DA$: PRINT D$"CLOSE "F$ |
|||
150 GOTO 600"DONE |
|||
REM LATEST |
|||
200 PRINT M$C$(AC)M$M$" NAME: "NA$M$"GENRE: "GE$M$" DATE: "DA$; |
|||
210 GOTO 600"DONE |
|||
REM LATEST OF EACH GENRE |
|||
300 DIM NA$(C),GE$(C),DA$(C):GC = 0: PRINT D$"OPEN "F$: PRINT D$"READ "F$: FOR I = 1 TO C: GOSUB 350:NA$(J) = NA$:GE$(J) = GE$:DA$(J) = DA$: NEXT I: PRINT D$"CLOSE "F$ |
|||
310 PRINT M$C$(AC)M$: FOR I = 1 TO GC: PRINT M$NA$(I)","GE$(I)","DA$(I);: NEXT I |
|||
320 GOTO 600"DONE |
|||
350 INPUT "";NA$,GE$,DA$: FOR J = 1 TO GC: IF GE$ = GE$(J) THEN RETURN |
|||
360 NEXT J:GC = GC + 1:J = GC: RETURN |
|||
REM ALL SORTED BY DATE |
|||
400 DIM NA$(C),GE$(C),DA$(C),DA(C):DC = 0: PRINT D$"OPEN "F$: PRINT D$"READ "F$: FOR I = 1 TO C: GOSUB 450:NA$(DC) = NA$:GE$(DC) = GE$:DA$(DC) = DA$:DA(DC) = DA(DP):DA(DP) = DC: NEXT I: PRINT D$"CLOSE "F$ |
|||
410 PRINT M$C$(AC)M$:DA = DA(0): FOR I = 1 TO DC: PRINT M$NA$(DA)","GE$(DA)","DA$(DA);:DA = DA(DA): NEXT I |
|||
420 GOTO 600"DONE |
|||
450 DP = 0: INPUT "";NA$,GE$,DA$: IF NOT DC THEN DC = 1: RETURN |
|||
460 FOR J = 1 TO DC:DA = DA(DP): IF DA$ > DA$(DA) THEN DP = DA:DA = DA(DA): NEXT J:DA = DP |
|||
470 DC = DC + 1: RETURN |
|||
REM USAGE |
|||
500 DATA "SIMPLE DATABASE" |
|||
510 DATA " RUN: , ADD A NEW ENTRY" |
|||
520 DATA " RUN: ,, PRINT THE LATEST ENTRY" |
|||
530 DATA " RUN: ,,, LATEST OF EACH GENRE" |
|||
540 DATA " RUN: ,,,, ALL SORTED BY DATE" |
|||
550 IF NOT DOS THEN C$ = "RUN " + P$ |
|||
560 PRINT "USAGE:"M$" "C$" ,..."M$" OR";: FOR I = 1 TO 4: PRINT M$C$(I);: NEXT I |
|||
REM DONE |
|||
600 END</syntaxhighlight> |
|||
==={{header|Run BASIC}}=== |
==={{header|Run BASIC}}=== |
||
<syntaxhighlight lang="runbasic">sqliteconnect #sql, "f:\client.db" ' Connect to the DB |
<syntaxhighlight lang="runbasic">sqliteconnect #sql, "f:\client.db" ' Connect to the DB |