| ![]() | ||||||||||||||||||||
Das nachfolgende Microsoft Basic Beispiel demonstriert die Verwendung der von FATS bereitgestellten
 Index-Befehle:
| "C" Create Indexfile (Indexdatei definieren, erstellen und öffnen.) | |
| "O" Open Indexfile (Indexdatei öffnen.) | |
| "K" Close Indexfile (Eine oder alle Indexdateien schließen.) | |
| "I" Insert Record ((Haupt)-Schlüssel in Indexdatei einfügen und Datensatznummer besetzen.) | |
| "F" Search First (Suchen des ersten Schlüssels.) | |
| "L" Search Last (Suchen des letzten Schlüssels.) | |
| "N" Search Next (Suchen des nächsten Schlüssels in Folge.) | |
| "A" Search Next After (Suchen des auf den angegebenen Schlüssel folgenden Schlüssels.) | |
| "E" Search Previous Before (Suchen des dem angegebenen Schlüssel vorangehenden Schlüssels.) | |
| "Y" Auto Refresh (Bestimmt das Verhalten der Bibliothek im Netzwerk- und Einzelplatzbetrieb.) |
PRINT "Dieses Programm muß mit Microsoft Basic Version 7- (Schalter /Fs)"
PRINT "übersetzt werden."
PRINT
PRINT "Es arbeitet mit FAR-Strings"
PRINT
PRINT "Folgende Module benötigen Sie:"
PRINT "Standalone: FATS_MB7.OBJ & FATS.OBJ"
PRINT "DLL-Version: FATSMB7D.OBJ & FATS_O16.LIB"
PRINT
INPUT "Bitte [ENTER] drücken...", X$
REM -------> ASCII-Datei mit Demodaten öffnen
OPEN "R", #1, "..\..\..\DEMODATA\KUNDEN.ASC", 105
FIELD #1, 5 AS F1$, 25 AS F2$, 25 AS F3$, 25 AS F4$, 5 AS F5$, 20 AS F6$
REM -------> Datendatei erstellen
PRINT "Datendatei wird erstellt ..."
OPEN "R", #2, "KUNDEN.DAT", 128
FIELD #2, 1 AS LOESCHKENNZ$,_
5 AS ANREDE$,_
25 AS NAME$,_
25 AS BRANCHE$,_
25 AS STRASSE$,_
5 AS PLZ$,_
20 AS ORT$
REM -------> Indexdatei erstellen
PRINT "Indexdatei wird erstellt ..."
CALL FATSBASIC("C\KUNDEN.KEY\25\3\A\1",ERRORCODE%,RECNO&,KEYLEN%)
REM -------> Datensätze einfügen
PRINT
PRINT "Es werden jetzt 222 Datensätze in die Datei eingefügt. Für jeden"
PRINT "Datensatz werden 3 Schlüssel in die Indexdatei eingefügt."
INPUT "Bitte [ENTER] drücken...", X$
FOR X=1 TO 222
GET #1,X
LSET LOESCHKENNZ$=" "
LSET ANREDE$=F1$
LSET NAME$=F2$
LSET BRANCHE$=F3$
LSET STRASSE$=F4$
LSET PLZ$=F5$
LSET ORT$=F6$
CMND$="I\1\"+RTRIM$(NAME$)+"\"+RTRIM$(BRANCHE$)+"\"+RTRIM$(PLZ$+ORT$)
CALL FATSBASIC(CMND$,ERRORCODE%,RECNO&,KEYLEN%)
IF ERRORCODE% <> 0 GOTO ENDE
PRINT NAME$;" --> Satznummer ";RECNO&
PUT #2,RECNO&
NEXT X
CLOSE #1
REM -------> Datensätze nach Name sortiert ausgeben
PRINT
PRINT "Die Datensätze werden jetzt anhand des ersten Schlüssels (NAME)"
PRINT "aufsteigend sortiert ausgegeben. Der dabei verwendete FATS-Befehl"
PRINT "SEARCH NEXT AFTER kann im Einzelplatz und im Netzwerk verwendet"
INPUT "werden. Bitte [ENTER] drücken...", X$
CMND$="F\1\1"
SCHLEIFE1:
CALL FATSBASIC(CMND$,ERRORCODE%,RECNO&,KEYLEN%)
IF ERRORCODE% <> 0 GOTO WEITER1
FATSKEY$=SPACE$(KEYLEN%)
CALL FATSGETKEY(FATSKEY$)
GET #2,RECNO&
PRINT NAME$;" --> Satznummer ";RECNO&
CMND$="A\1\"+STR$(RECNO&)+"\1\"+FATSKEY$
GOTO SCHLEIFE1
WEITER1:
REM -------> Datensätze nach Branche sortiert ausgeben
PRINT
PRINT "Die Datensätze werden jetzt anhand des zweiten Schlüssels (BRANCHE)"
PRINT "aufsteigend sortiert ausgegeben."
INPUT "Bitte [ENTER] drücken...", X$
CMND$="F\2\1"
SCHLEIFE2:
CALL FATSBASIC(CMND$,ERRORCODE%,RECNO&,KEYLEN%)
IF ERRORCODE% <> 0 GOTO WEITER2
GET #2,RECNO&
PRINT BRANCHE$;" ";NAME$;" --> Satznummer ";RECNO&
REM **** Nur für Einzelplatzsysteme geeignet: SEARCH NEXT ****
CMND$="N\1"
GOTO SCHLEIFE2
WEITER2:
REM -------> Datensätze nach PLZ & Ort sortiert ausgeben
PRINT
PRINT "Die Datensätze werden jetzt anhand des dritten Schlüssels (PLZ/ORT)"
PRINT "absteigend sortiert ausgegeben."
INPUT "Bitte [ENTER] drücken...", X$
CMND$="L\3\1"
SCHLEIFE3:
CALL FATSBASIC(CMND$,ERRORCODE%,RECNO&,KEYLEN%)
IF ERRORCODE% <> 0 GOTO WEITER3
FATSKEY$=SPACE$(KEYLEN%)
CALL FATSGETKEY(FATSKEY$)
GET #2,RECNO&
PRINT PLZ$;" ";ORT$;" ";NAME$;" --> Satznummer ";RECNO&
CMND$="E\3\"+STR$(RECNO&)+"\1\"+FATSKEY$
GOTO SCHLEIFE3
WEITER3:
ENDE:
REM -------> Indexdatei schließen
CALL FATSBASIC("K\1",ERRORCODE%,RECNO&,KEYLEN%)
CLOSE #2
© 2008
GCS Software, Udo Gertz