|
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 Microsoft Basic Beispiel demonstriert die Verwendung der von FATS bereitgestellten  FABS PLUS kompatiblen Befehle:
PRINT "KOMPATIBLE FABS-PLUS SCHNITTSTELLE" PRINT PRINT "Dieses Programm muß mit Microsoft Basic übersetzt werden." PRINT PRINT "Es arbeitet mit NEAR-Strings" PRINT PRINT "Wenn Sie mit einer Basic-Version größer 6.x arbeiten, müssem Sie" PRINT "sicherstellen, daß die Basic-Strings als NEAR-Strings gespeichert" PRINT "werden. Wenn Sie mit FAR-Strings arbeiten wollen, dann verwenden Sie" PRINT "das Objektmodul FATS_MB7.OBJ !" PRINT PRINT "Folgende Module benötigen Sie:" PRINT "Standalone: FATS_MB6.OBJ & FATS.OBJ" PRINT "DLL-Version: FATSMB6D.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 FABSMB("C\KUNDEN.KEY\25\3\A\1", ERRORCODE%, RECNO%, ADRKEY%) 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 FABSMB(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 FABSMB(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 FABSMB(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 FABSMB(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 FABSMB("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