1 Introduction
10 DIM Buf$[170],B$[5],Order_no$[10],Names$[30] 20 INTEGER S(9) ! Ten-element status array. 30 B$="SAD" 40 DBOPEN (B$,"SECRET",3,S(*)) ! Open the database. 50 DBASE IS B$ 60 IN DATA SET "CUSTOMERS" USE Order_no$,Name$ 70 ! Now set up a workfile with CUSTOMER as the thread. . . . 110 ! Sort the orders by order number. . . 140 PRINT " ORDER NUMBER";TAB(30);"CUSTOMER NAME";LIN(2) 150 FOR I=1 TO Entry_count 160 ! Read the record pointer into Rec_no. . 180 DBGET (B$,"CUSTOMER",4,S(*),"@",Buf$,Rec_no) 190 PRINT Order_no$;TAB(30);Name$ 200 NEXT I 210 DBCLOSE (B$," ",1,S(*)) . 230 END RUN ORDER NUMBER CUSTOMER NAME 10 ABC Company 100 Colorado Feed and Grain 12.6 Bruce's Bar & Grill 17.2 Timmy's Pet Store 20 ABC Company 999 Internal Revenue ServiceIn many respects, the workfile is just like a regular data file. It must be CREATEd and ASSIGNed just like a DATA file. Only its use in the program distinguishes it as a workfile. After the program defines a file as a workfile, it remains that way until either it is de-ASSIGNed or the program stops. Since the workfile is so similar to a normal data file, most of the standard file operations work on it. Record pointers are read from the workfile with the READ # statement, and pointers may be added to it using PRINT #. The next figure shows how the contents of the workfile are related to the base entries used in the previous example.
Figure 2 Data Base/Workfile Relationship