FATS - Fast Access Tree System
Inhaltsverzeichnis
Programmierschnittstellen
Visual Basic für DOS


FATS ist aufrufkompatibel zu der Dateiverwaltung FABS PLUS, dadurch ist die Einbindung des Programmes in bestehende, auf FABS basierende Anwendungsprogramme ohne Quelltextänderungen durch Austausch der OBJ-Module erledigt.

Sämtliche Programmierschnittstellen dieser Software wurden nachgebildet. Sie können auch in Kombination mit den neuen verbesserten Schnittstellen von FATS verwendet werden, um so einen schrittweisen Umstieg zu ermöglichen.

Das nachfolgende VB DOS Beispiel demonstriert die Verwendung der von FATS bereitgestellten  FABS PLUS kompatiblen Befehle:

PRINT "KOMPATIBLE FABS-PLUS SCHNITTSTELLE"
PRINT
PRINT "Dieses Programm muß mit Microsoft Visual Basic für MS-DOS übersetzt"
PRINT "werden."
PRINT
PRINT "Folgende Objektmodule benötigen Sie: FATS.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 FBSVBDOS("C\KUNDEN.KEY\25\3\A\1", ERRORCODE%, RECNO%, ADRKEY%)
IF ERRORCODE% <> 0 GOTO ENDE

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 FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
  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 FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
  IF ERRORCODE% <> 0 GOTO WEITER1
  CALL FABSGETKEY(FABSKEY$, ADRKEY%, 25)
  GET #2,RECNO%
  PRINT NAME$;" --> Satznummer ";RECNO%
  CMND$="A\1\"+STR$(RECNO%)+"\1\"+FABSKEY$
  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 FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
  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 FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
  IF ERRORCODE% <> 0 GOTO WEITER3
  CALL FABSGETKEY(FABSKEY$, ADRKEY%, 25)
  GET #2,RECNO%
  PRINT PLZ$;" ";ORT$;" ";NAME$;" --> Satznummer ";RECNO%
  CMND$="E\3\"+STR$(RECNO%)+"\1\"+FABSKEY$
  GOTO SCHLEIFE3
WEITER3:

ENDE:

REM  -------> Indexdatei schließen

CALL FBSVBDOS("K\1", ERRORCODE%, RECNO%, ADRKEY%)

CLOSE #2
END


REM  -------> SUB: Schlüssel ermitteln

SUB FABSGETKEY (FABSKEY$, ADRKEY%, KEYLEN%)
  FABSKEY$=""
  CALL GFSEG(FSEG%)
  ADRKEY=ADRKEY%
  IF ADRKEY < 0 THEN ADRKEY=ADRKEY+65536!
  FOR X=ADRKEY TO ADRKEY+KEYLEN% - 1
    DEF SEG=FSEG%
    KCHAR=PEEK(ADRKEY)
    DEF SEG
    FABSKEY$=FABSKEY$+CHR$(KCHAR)
    ADRKEY=ADRKEY+1
  NEXT X
END SUB
 

© 2008  GCS Software, Udo Gertz