|
Das nachfolgende Microsoft Basic Beispiel demonstriert die Verwendung der von FATS bereitgestellten  Index-Befehle:
REM FATS 02.30 REM (c) GCS Software, Udo Gertz 1993-1998 REM REM Testprogramm (Microsoft Basic / Quick Basic Compiler) REM REM Datei KUNDEN.DAT re-indizieren REM REM 19-03-2009 U.Gertz REM -------> Aktivierung des FATS Cachesystems REM REM Standardmäßig ist die Cacheverwaltung ausgeschaltet. Sie können diese REM mit dem Befehl "Y" Auto Refresh initialisieren. REM REM Mit diesem Befehl können Sie vor einer Reorganisation den FATS-Cache REM mittels "Y\5" oder "Y\106" einschalten, die entsprechende Indexdatei REM erzeugen oder öffnen und dann die Schlüssel einfügen. REM Nach Beenden der Reorganisation stellen Sie den ursprünglichen Zustand REM mit "Y\0", "Y\2" etc. wieder her. Die Operation kann dadurch im REM günstigsten Fall bis zu 30x schneller ablaufen. REM REM Bei der Einstellung "Y\5" werden die Daten nicht sofort nach jedem REM schreibenden Befehl auf die Platte geschrieben, sondern solange in den REM FATS internen Cachepuffern behalten, bis diese überlaufen. Beim ersten REM Schreibzugriff werden jedoch sämtliche zu der jeweiligen Datei gehörende REM Puffer auf die Platte geschrieben, wodurch die Integrität der Indexdatei REM garantiert wird. Das Zurückschreiben der Cachepuffer kann auch jederzeit REM durch den Befehl W (Write Page Map) erreicht werden. REM REM Diese Einstellung bringt im günstigsten Fall eine bis zu 30-fache REM Beschleunigung gegenüber den herkömmlichen Einstellungen ("Y\0" & "Y\2"), REM es muß jedoch selbst dafür gesorgt werden, daß die Indexdatei bei REM Beendigung des Programmes mit dem Befehl Close Indexfile (K) geschlossen REM wird. REM REM Als Äquivalent im Netzwerkbetrieb dient der Befehl "Y\106" REM CALL FATSBASIC( "Y\5", ERRORCODE%, RECNO&, KEYLEN% ) REM -------> Datendatei öffnen OPEN "R", #1, "KUNDEN.DAT", 128 FIELD #1, 1 AS LOESCHKENNZ$,_ 5 AS ANREDE$,_ 25 AS NAME$,_ 25 AS BRANCHE$,_ 25 AS STRASSE$,_ 5 AS PLZ$,_ 20 AS ORT$ REM -------> Indexdatei erstellen CALL FATSBASIC( "C\KUNDEN.KEY\25\3\A\1", ERRORCODE%, RECNO&, KEYLEN% ) IF ERRORCODE% <> 0 GOTO ENDE REM ======================================================================== REM Indexdatei wiederherstellen REM ======================================================================== RECORDS& = 0 DO GET #1, RECORDS& + 1 IF EOF(1) THEN EXIT DO END IF RECORDS& = RECORDS& + 1 IF LOESCHKENNZ$ = " " THEN REM "BK" Build Keys REM REM Diesem Befehl wird die im Befehl Create Indexfile (C) REM angegebene Anzahl Schlüssel im Kommandostring übergeben. REM Die Schlüssel werden in die Indexdatei einsortiert und REM der Satznummer "RecNo" zugeordnet. REM REM Dieser Befehl entspricht dem Befehl Insert Keys (IK), die REM Daten werden jedoch nicht sofort nach dem Befehl auf die REM Platte geschrieben, sondern solange in den FATS internen REM Cachepuffern behalten, bis diese überlaufen. REM REM Der Aufbau des Kommandostrings: REM REM szCmnd = "BK\{RecNo}\{FileNo}\{KeyStr1}[\{KeyStr2}[\{KeyStr3}]]" REM REM RecNo Datensatznummer REM REM FileNo Nummer der Indexdatei REM REM KeyStr# Schlüssel CMND$ = "BK\" + STR$(RECORDS&) + "\1\" CMND$ = CMND$ + RTRIM$(NAME$) + "\" + RTRIM$(BRANCHE$) + "\" + RTRIM$(PLZ$ + ORT$) ELSE REM "DL" Manipulate Deleted List CMND$ = "DL\" + STR$(RECORDS&) + "\S\1" END IF CALL FATSBASIC( CMND$, ERRORCODE%, RECNO&, KEYLEN% ) IF ERRORCODE% <> 0 THEN EXIT DO LOOP WHILE NOT EOF(1) ENDE: REM --------> Indexdatei schließen CALL FATSBASIC( "K\1", ERRORCODE%, RECNO&, KEYLEN% ) CLOSE #1 END
© 2008 GCS Software, Udo Gertz