|
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) oder" PRINT "Microsoft Visual Basic für DOS übersetzt werden." PRINT PRINT "Es arbeitet mit FAR-Strings" PRINT PRINT "Folgende Objektmodule benötigen Sie: FATS.OBJ & FATS_MB7.OBJ" 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