FATS - Fast Access Tree System
Inhaltsverzeichnis
Programmierschnittstellen
MS-Basic, Quick Basic Compiler


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