/INDEX SET-UP PROGRAM: DESIGNED TO CREATE INDEX /BLOCKS FOR RASBOL TYPE INDEXED SEQUENTIAL FILES / /THESE ARE THE PROGRAM DATA AREAS / FIELD 0 *6200 KEYTAB, ZBLOCK 400 DBKKNT, 0 DBKNUM, 0 KEYKNT, 0 IBKKNT, 0 IBKNUM, 0 FILINF, ZBLOCK 11 RBDATA, ZBLOCK 2 WBDATA, ZBLOCK 2 / / /THE MAIN PROGRAM BEGINS HERE BY SETTING TABS /ON THE TERMINET AND INITIALISING WORK AREAS / FIELD 1 *0000 START, PRINTC 01 ;215 PRINTC 01 ;33 PRINTC 01 ;62 LOADIM ;12 STORE1 01 ;OPENFL+1 TBSTLP, PRINTC 01 ;33 PRINTC 01 ;61 PRINTC 12 ;240 DECGOZ 10 ;.+4 ;OPENFL+1 GOTO ;TBSTLP PRINTC 01 ;33 PRINTC 01 ;61 FILL ;-1 ;KEYTAB ;400 / /THE FILE INFORMATION IS NOW INPUT / INLP, FILL ;0 ;DBKKNT ;22 PRINT 15 ;TEXT '_^FINISHED? ' YESNO ;.+3 GOTO ;JOBEND PRINT 14 ;TEXT '__^DEVICE = ' TYPTEX 01 ;OPENFL+1 ;4 PRINT 16 ;TEXT '_^FILE NAME = ' TYPTEX 01 ;OPENFL+3 ;6 PRINT 16 ;TEXT '_^EXTENSION = ' TYPTEX 01 ;OPENFL+6 ;2 / /INFORMATION INPUT IS NOW VERIFIED / PRINT 14 ;TEXT '_^CORRECT? ' YESNO ;INLP / /IF INFORMATION IS CORRECT, FILE INDEX IS CREATED / OPENFL, OPEN ;DEVICE ;FILENAME . ;FILINF GOIF ;.+2 ;OPENER GOTO ;LPSET OPENER, PRINT 20 ;TEXT '_^ERROR OPENING ' GOTO ;PRFLNM / /THE PROGRAM LOOP IS NOW SET UP / LPSET, LOAD1 ;FILINF+10 ADD1 ;FILINF+3 STORE1 ;DBKKNT LOADX1 ;FILINF+7 MULTX1 02 MOVE 11 ;INSTAB ;FETKEY ;2 LOAD1 ;FILINF+1 ADD1 ;FILINF+3 STORE1 ;DBKNUM CLEARW ;KEYKNT LOAD1 ;FILINF+3 NEGATE STORE1 ;IBKKNT LOAD1 ;FILINF+1 STORE1 ;IBKNUM LOAD1 ;FILINF STORE1 ;RBDATA STORE1 ;WBDATA / /THIS SECTION OF THE PROGRAM READS A DATA /BLOCK AND STORES THE FIRST KEY IN A TABLE / RDBKLP, LOAD1 ;DBKNUM STORE1 ;RBDATA+1 LOAD2 ;RBDATA READAB FETKEY, NOP ;NOP LOADX1 ;KEYKNT MULTX1 3 STOKEY, STORE ;KEYTAB INCREM ;KEYKNT LOAD1 ;KEYKNT SUBTIM ;125 GOIF ;WINDXB ;.+1 RBLCON, INCREM ;DBKNUM INCGOZ ;WINDXB ;DBKKNT GOTO ;RDBKLP / /THIS IS A TABLE OF FETCH INSTRUCTIONS / INSTAB, GOTO ;KEYERR LOAD1 ;XAREA+1 LOAD2 ;XAREA+1 LOAD ;XAREA+1 / /THIS SECTION OF THE PROGRAM WRITES AN INDEX BLOCK AWAY / WINDXB, LOAD1 ;IBKNUM STORE1 ;WBDATA+1 MOVE ;KEYTAB ;XAREA ;400 LOAD2 ;WBDATA WRITAB INCREM ;IBKNUM INCGOZ ;ERTEST ;IBKKNT CLEARW ;KEYKNT FILL ;-1 ;KEYTAB ;400 GOIFZO ;SETEND ;DBKKNT GOTO ;RBLCON / /THIS SECTION OF THE PROGRAM TESTS THE INDEX FOR OVERFLOW / ERTEST, GOIFZO ;SETEND ;DBKKNT PRINT 24 ;TEXT '_^INDEX OVERFLOW IN ' PRFLNM, PRINTX 01 ;OPENFL+1 ;4 PRINTC 01 ;": PRINTX 01 ;OPENFL+3 ;6 PRINTC 01 ;". PRINTX 01 ;OPENFL+6 ;2 PRINT 02 ;TEXT '__' GOTO ;INLP / /THIS EXIT IS TAKEN IF A KEY LENGTH OF ZERO IS FOUND / KEYERR, PRINT 22 ;TEXT '_^KEY LENGTH 0 IN ' GOTO ;PRFLNM / /THIS IS THE EXIT FOR A CORRECT SET-UP / SETEND, PRINT 24 ;TEXT '_^INDEX CREATED FOR ' GOTO ;PRFLNM / /THE PROGRAM FINISHES HERE / JOBEND, PRINT 15 ;TEXT '__^END OF JOB' EXIT $