| ![]() | ||||||||||||||||||||
Das nachfolgende VB DOS 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 (Visual Basic für DOS)
REM
REM Schnelle Re-Indizierung (Befehl "XB")
REM Es wird die erweiterte FATS Version benötigt.
REM
REM 19-03-2009 U.Gertz
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
REM
"C" Create Indexfile
REM
REM Mit diesem Befehl erstellen Sie eine Indexdatei, wobei eine
REM eventuell bereits vorhandene Datei mit demselben Dateinamen
REM gelöscht wird.
REM Die Indexdatei wird dabei gleichzeitig mit den über den
REM Befehl Auto Refresh (Y) definierten Öffnungsflags geöffnet
REM und der Dateinummer "FileNo" zugewiesen. Diese Nummer muß bei
REM allen nachfolgenden FATS-Befehlen angegeben werden, um mit
REM der Indexdatei zu arbeiten.
REM
REM Maximal 200 Schlüssel pro Datensatz können in einer Indexdatei
REM verwaltet werden, wobei die maximale Schlüssellänge 240 Zeichen
REM beträgt.
REM
REM Beachten Sie bei der Dateipfadangabe, daß der Backslash (\) von
REM FATS als Trennzeichen behandelt wird und daher im Pfad durch
REM einen normalen Schrägstrich ersetzt werden sollte.
REM Alternativ dazu können Sie auch das Trennzeichen umdefinieren,
REM indem Sie dieses als erstes Zeichen im Befehlsstring angeben,
REM z.B. szCmnd = "&C&C:\ARTIKEL.KEY&1&1&A&1" (das Trennzeichen muß
REM ein ASCII-Zeichen kleiner als 48 sein).
REM
REM Der Aufbau des Kommandostrings:
REM
REM szCmnd = "C\{Filename}\{KeyLength}\{KeyCount}\{KeyType}\{FileNo}"
REM
REM FileName Name der Datei, eventuell mit Pfadangabe
REM (z.B. C:/DATEN/ARTIKEL.KEY oder ARTIKEL.KEY)
REM
REM KeyLength Maximale Länge der Schlüssel
REM
REM KeyCount Anzahl Schlüssel (1-200)
REM
REM KeyType Art der Schlüssel (A=ASCII Textschlüssel, I=Integer)
REM
REM FileNo Nummer der Indexdatei (1-40)
CALL FATSBASIC( "C\KUNDEN.KEY\25\3\A\1", ERRORCODE%, RECNO&, KEYLEN% )
IF ERRORCODE% <> 0 THEN
PRINT
IF ERRORCODE% = -1 THEN
PRINT "FATS Workstation Engine ist nicht aktiviert."
PRINT "Bitte starten Sie die Engine durch Eingabe von FATSXWE"
ELSE
PRINT "FATS Fehler: "; ERRORCODE%; " (Befehl: C)"
END IF
GOTO ENDE
END IF
REM ========================================================================
REM Indexdatei wiederherstellen
REM ========================================================================
RECORDS& = 0
DO
GET #1, RECORDS& + 1
IF EOF(1) THEN
REM Nachdem der letzte Datensatz indiziert wurde, wird die
REM Indizierung durch die Angabe einer Null anstelle einer
REM gültigen Datensatznummer beendet ("XB\{Dateinummer}\0").
REM Die Datei wird dabei geschlossen - ein Close-Befehl ist
REM danach nicht mehr nötig.
CALL FATSBASIC( "XB\1\0", ERRORCODE%, RECNO&, KEYLEN% )
EXIT DO
END IF
RECORDS& = RECORDS& + 1
IF LOESCHKENNZ$ = " " THEN
REM
"XB" Re-Indexing: Build
REM
REM Diesem Befehl wird die im Befehl "C" angegebene Anzahl
REM Schlüssel im Kommandostring übergeben. Die Schlüssel
REM werden in die Indexdatei einsortiert und der Satznummer
REM "RecNo" zugeordnet.
REM
REM Verwenden Sie diesen Befehl, um nach einem erfolgreichen
REM "Create Indexfile" (C) - Befehl innerhalb einer
REM Programmschleife die Schlüssel aller Datensätze in den
REM Index einzufügen.
REM Der Befehl steht nur bei einer Re-Indizierung bereit, d.h.
REM unmittelbar nach Ausführung des "C"-Kommandos, spätere
REM Änderungen am Index werden z.B. über den Insert Record (I)
REM Befehl realisiert.
REM
REM Das Kommando "XB\{FileNo}\0" beendet die Re-Indizierung und
REM schließt die entsprechende Indexdatei. Die Indexdatei wird bei
REM einem durch Fehler bedingten vorzeitigen Abbruch der Re-Indizierung
REM automatisch geschlossen. In jedem Fall kann ein anschließendes
REM Close-Kommando unterbleiben.
REM
REM Die Länge der übergebenen Schlüssel darf die beim "Create
REM Indexfile" (C) angegebene Länge nicht überschreiten, kürzere
REM Schlüssel werden mit dem ASCII-Zeichen 00h auf die maximale
REM Schlüssellänge erweitert.
REM
REM Der Aufbau des Kommandostrings:
REM
REM szCmnd = "XB\{FileNo}\{RecNo}\{KeyStr1}[\{KeyStr2}]"
REM
REM FileNo Nummer der Indexdatei
REM
REM RecNo <> 0 Datensatznummer
REM == 0 Re-Indizierung beenden
REM
REM KeyStr# Schlüssel
CMND$ = "XB\1\" + STR$(RECORDS&) + "\"
CMND$ = CMND$ + RTRIM$(NAME$) + "\" + RTRIM$(BRANCHE$) + "\" + RTRIM$(PLZ$ + ORT$)
ELSE
REM Datensatz als "Gelöscht" markieren
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:
CLOSE #1
END
© 2008
GCS Software, Udo Gertz