FATS - Fast Access Tree System
Inhaltsverzeichnis
Programmierschnittstellen
QBasic (ab DOS 5)


FATS ist aufrufkompatibel zu der Dateiverwaltung FABS PLUS, dadurch ist die Einbindung des Programmes in bestehende, auf FABS basierende Anwendungsprogramme ohne Quelltextänderungen durch Austausch der OBJ-Module erledigt.

Sämtliche Programmierschnittstellen dieser Software wurden nachgebildet. Sie können auch in Kombination mit den neuen verbesserten Schnittstellen von FATS verwendet werden, um so einen schrittweisen Umstieg zu ermöglichen.

Das nachfolgende Basic Beispiel demonstriert die Verwendung der von FATS bereitgestellten  FABS PLUS kompatiblen Befehle:

10   PRINT"Dieses Programm funktioniert mit dem Quick Basic Interpreter (DOS5)"
20   PRINT
30   INPUT"Bitte [ENTER] drücken...";X$
40   REM
50   REM  -------> FSEG / Segmentadresse von FATS lesen
60   REM
70   OPEN "I" , #1, "FSEG"
80   INPUT #1,FSEG
90   CLOSE #1
100  REM
110  REM  -------> ASCII-Datei mit Demodaten öffnen
120  REM
130  OPEN "R", #1, "..\..\..\DEMODATA\KUNDEN.ASC", 105
140  FIELD #1,5 AS F1$,25 AS F2$,25 AS F3$,25 AS F4$,5 AS F5$,20 AS F6$
200  REM
210  REM  -------> Datendatei erstellen
220  REM
230  PRINT"Datendatei wird erstellt ..."
240  OPEN "R", #2, "KUNDEN.DAT", 128
250  FIELD #2,1 AS D1$,5 AS D2$,25 AS D3$,25 AS D4$,25 AS D5$,5 AS D6$,20 AS D7$
260  REM
270  REM  -------> Indexdatei erstellen
280  REM
290  PRINT"Indexdatei wird erstellt ..."
300  CMND$="C\KUNDEN.KEY\25\3\A\1"
310  GOSUB 2130
400  REM
410  REM  -------> Datensätze einfügen
420  PRINT
430  PRINT"Es werden jetzt 222 Datensätze in die Datei eingefügt. Für jeden"
440  PRINT"Datensatz werden 3 Schlüssel in die Indexdatei eingefügt."
450  INPUT"Bitte [ENTER] drücken...";X$
460  FOR X=1 TO 222
470    GET #1,X
480    LSET D1$=" "
490    LSET D2$=F1$
500    LSET D3$=F2$
510    LSET D4$=F3$
520    LSET D5$=F4$
530    LSET D6$=F5$
540    LSET D7$=F6$
550    CMND$="I\1\"+RTRIM$(D3$)+"\"+RTRIM$(D4$)+"\"+RTRIM$(D6$+D7$)
560    GOSUB 2130
570    IF FATSERR% <> 0 THEN 2030
580    PRINT D3$;" --> Satznummer ";RECNO
590    PUT #2,RECNO
600  NEXT X
610  CLOSE #1
700  REM
710  REM  -------> Datensätze nach Name sortiert ausgeben
720  REM
730  PRINT
740  PRINT"Die Datensätze werden jetzt anhand des ersten Schlüssels (NAME)"
750  PRINT"aufsteigend sortiert ausgegeben. Der dabei verwendete FATS-Befehl"
760  PRINT"SEARCH NEXT AFTER kann im Einzelplatz und im Netzwerk verwendet"
770  INPUT"werden. Bitte [ENTER] drücken...";X$
780  CMND$="F\1\1"
790  GOSUB 2130
800  IF FATSERR% <> 0 THEN 920
820  GOSUB 2270
830  GET #2,RECNO
840  PRINT D3$;" --> Satznummer ";RECNO
850  CMND$="A\1\"+STR$(RECNO)+"\1\"+FATSKEY$
860  GOTO 790
900  REM
910  REM  -------> Datensätze nach Branche sortiert ausgeben
920  PRINT
930  PRINT"Die Datensätze werden jetzt anhand des zweiten Schlüssels (BRANCHE)"
940  PRINT"aufsteigend sortiert ausgegeben."
950  INPUT"Bitte [ENTER] drücken...";X$
960  CMND$="F\2\1"
970  GOSUB 2130
980  IF FATSERR% <> 0 THEN 1060
990  GET #2,RECNO
1000 PRINT D4$;" ";D3$;" --> Satznummer ";RECNO
1010 REM **** Nur für Einzelplatzsysteme geeignet: SEARCH NEXT ****
1020 CMND$="N\1"
1030 GOTO 970
1040 REM
1050 REM  -------> Datensätze nach PLZ & Ort sortiert ausgeben
1060 PRINT
1070 PRINT"Die Datensätze werden jetzt anhand des dritten Schlüssels (PLZ/ORT)"
1080 PRINT"absteigend sortiert ausgegeben."
1090 INPUT"Bitte [ENTER] drücken...";X$
1100 CMND$="L\3\1"
1110 GOSUB 2130
1120 IF FATSERR% <> 0 THEN 2030
1140 GOSUB 2270
1150 GET #2,RECNO
1160 PRINT D6$;" ";D7$;" ";D3$;" --> Satznummer ";RECNO
1170 CMND$="E\3\"+STR$(RECNO)+"\1\"+FATSKEY$
1180 GOTO 1110
2000 REM
2010 REM  -------> Indexdatei schließen (nicht vergessen !!!)
2020 REM
2030 CMND$="K\1"
2040 GOSUB 2130
2050 CLOSE #2
2060 SYSTEM
2100 REM
2110 REM *** FATS aufrufen ***
2120 REM
2130 FTSQUICK%=8
2140 DEF SEG=FSEG
2150 CALL ABSOLUTE (CMND$,FATSERR%,RECLO%,ADRKEY%,FTSQUICK%)
2160 RECLO=RECLO% : IF RECLO<0 THEN RECLO=RECLO+65536!
2170 ADRKEY=ADRKEY% : IF ADRKEY<0 THEN ADRKEY=ADRKEY+65536!
2180 CMND$="X"
2190 CALL ABSOLUTE (CMND$,DUMMY%,RECHI%,DUMMY%,FTSQUICK%)
2200 RECHI=RECHI% : IF RECHI<0 THEN RECHI=RECHI+65536!
2210 RECNO=RECLO+RECHI*65536!
2220 DEF SEG
2230 RETURN
2240 REM
2250 REM *** Schlüsselwert kopieren ***
2260 REM
2270 FATSKEY$=""
2280 FOR X=ADRKEY TO ADRKEY+24
2290   DEF SEG=FSEG
2300   FATSI=PEEK(ADRKEY)
2310   DEF SEG
2320   FATSKEY$=FATSKEY$+CHR$(FATSI)
2330   ADRKEY=ADRKEY+1
2340 NEXT X
2350 RETURN
 

© 2008  GCS Software, Udo Gertz