| ![]() | ||||||||||||||||||||
The FATS Toolkit supports a calling interface that is 100% compatible with the program FABS-Plus Net of Computer Control Systems. All programming interfaces of this software were reproduced. There is no need to change your source code. You just need to change obj-/dll files to use FATS in existing projects, for example in the MS-DOS environment you only have to replace the FABSP module with the FATS module. The following VB DOS example demonstrates the use of the
 FABS PLUS compatible commands:
PRINT "Compatible Programming Interface (FABS PLUS)"
PRINT
PRINT "This Test Program was designed for Visual Basic (MS-DOS)"
PRINT
PRINT "To compile and link the test program, use ONE of the following methods:"
PRINT
PRINT " 1. METHOD: Linking FATS to the program"
PRINT
PRINT " BC tst0_eng"
PRINT " LINK tst0_eng fats.obj"
PRINT
PRINT " 2. METHOD: Calling the Workstation Engine"
PRINT
PRINT " BC tst0_eng"
PRINT " LINK tst0_eng fatsvbdr.lib (FATS Standard Version FATS_WE.EXE)"
PRINT
PRINT " or if you own the extended version of FATS:"
PRINT
PRINT " LINK tst0_eng fatsxvbr.lib (FATS Extended Version FATSXWE.EXE)"
PRINT
INPUT "Please press the [ENTER] key ...", X$
PRINT
REM -------> open file with test data
OPEN "R", #1, "..\..\..\DEMODATA\CUSTOMER.ASC", 105
FIELD #1, 5 AS F1$, 25 AS F2$, 25 AS F3$, 25 AS F4$, 5 AS F5$, 20 AS F6$
REM -------> create data file
PRINT "Creating Data File ..."
OPEN "R", #2, "CUSTOMER.DAT", 128
FIELD #2, 1 AS DELETEDMARK$,_
5 AS CUSTID$,_
25 AS NAME$,_
25 AS JOB$,_
25 AS STREET$,_
5 AS ZIP$,_
20 AS CITY$
REM -------> create index file
PRINT "Creating Index File ..."
CALL FBSVBDOS("C\CUSTOMER.KEY\25\4\A\1", ERRORCODE%, RECNO%, ADRKEY%)
IF ERRORCODE% <> 0 GOTO ENDE
REM -------> insert records
PRINT
PRINT "290 records will be inserted into the data file."
PRINT "For each record 4 keys will be stored in the index file"
PRINT
INPUT "Please press the [ENTER] key ...", X$
FOR X=1 TO 290
GET #1,X
LSET DELETEDMARK$=" "
LSET CUSTID$=F1$
LSET NAME$=F2$
LSET JOB$=F3$
LSET STREET$=F4$
LSET ZIP$=F5$
LSET CITY$=F6$
CMND$="I\1\"+RTRIM$(CUSTID$)+"\"+RTRIM$(NAME$)+"\"+RTRIM$(JOB$)+"\"+RTRIM$(ZIP$+CITY$)
CALL FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
IF ERRORCODE% <> 0 GOTO ENDE
PRINT NAME$;" --> RecNo ";RECNO%
PUT #2,RECNO%
NEXT X
CLOSE #1
REM -------> print all customers, sorted in ascending order by NAME
PRINT
PRINT "This list shows some fields from the Customer Table,"
PRINT "sorted in ascending alphabetical order on the Customer's"
PRINT "surname and forename."
PRINT
INPUT "Please press the [ENTER] key ...", X$
CMND$="F\2\1"
LOOP1:
CALL FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
IF ERRORCODE% <> 0 GOTO LABEL1
CALL FABSGETKEY(FABSKEY$, ADRKEY%, 25)
GET #2,RECNO%
PRINT NAME$;" ";JOB$;" --> RecNo ";RECNO%
CMND$="A\2\"+STR$(RECNO%)+"\1\"+FABSKEY$
GOTO LOOP1
LABEL1:
REM -------> print all customers, sorted in ascending order by JOB
PRINT
PRINT "Two columns - JOB and NAME are displayed, sorted in ascending"
PRINT "order by the JOB field."
PRINT
INPUT "Please press the [ENTER] key ...", X$
CMND$="F\3\1"
LOOP2:
CALL FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
IF ERRORCODE% <> 0 GOTO LABEL2
GET #2,RECNO%
PRINT JOB$;" ";NAME$;" --> RecNo ";RECNO%
CMND$="N\1"
GOTO LOOP2
LABEL2:
REM -------> print list with records sorted by ZIP and CITY
PRINT
PRINT "Three columns - ZIP, CITY and NAME are displayed, sorted in"
PRINT "descending order by ZIP then CITY."
PRINT
INPUT "Please press the [ENTER] key ...", X$
CMND$="L\4\1"
LOOP3:
CALL FBSVBDOS(CMND$, ERRORCODE%, RECNO%, ADRKEY%)
IF ERRORCODE% <> 0 GOTO LABEL3
CALL FABSGETKEY(FABSKEY$, ADRKEY%, 25)
GET #2,RECNO%
PRINT ZIP$;" ";CITY$;" ";NAME$;" --> RecNo ";RECNO%
CMND$="E\4\"+STR$(RECNO%)+"\1\"+FABSKEY$
GOTO LOOP3
LABEL3:
ENDE:
REM -------> close index file
CALL FBSVBDOS("K\1", ERRORCODE%, RECNO%, ADRKEY%)
CLOSE #2
END
REM -------> SUB: get the return key value from FATS
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