FATS - Fast Access Tree System
Inhaltsverzeichnis
Programmierschnittstellen
MS-Basic für OS/2


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