40 ID$=””: REM RANDOM DISK ID
45 NR=0: REM # RECORDS IN R-FILE
46 CR=0: REM CURRENT RECORD #
47 FR=0: REM 1ST FREE RECORD UNUSED
50 NF=0: REM # FIELDS IN RECORD
51 CF=0: REM CURRENT FIELD #
55 RB=0: REM # RECORDS PER BLOCK
56 RS=0: REM RECORD SIZE IN BYTES
60 NB=0: REM # BLOCKS IN R-FILE
65 E=0: REM ERROR FLAG, OK=0
66 REM EN$,EM$,ET$,ES$,ET,ES ERROR CHANNEL VARIABLES
70 EP=.5/256: REM INTEGER CORRECTION
75 AS=0: REM INDEEX ARRAY ADDRESSING STRTEGY
76 REM AS=0: USE ARRAY INDEX; AS=1: T&S ARE SET, CR= RECORD OFFSET IN BLOCK
90 REM “A” VARIABLES ARE TEMPORARY
95 DN=8:OPENCC,DN,CC: REM DN=DEVICE NUMBER
98 GOTO 2000: REM START OF USER PROGRAM
99 REM
100 REM *******************************
101 REM RANDOM FILE DIMENSION ROUTINE
102 REM 1ST SET NR, NF, &NB
103 REM
105 GOSUB 150
110 IF FP%=-1 THEN RETURN
111 FP%=-1
115 DIM FS%(NF): REM FIELD SIZE
120 DIM FP%(NF): REM FIELD POSITION
125 REM FP%(I(=SUM [FS%(I-1)]
130 DIM FT%(NF) :REM FIELD SIZE
135 DIM FH$(NF) :REM FIELD POSITION
140 DIM F$(NF) :REM FIELD ARGS-ALPHA, BINARY
145 DIM F(NF) :REM FIELD ARGS-NUMERIC
146 RETURN
150 IF IT%=-1 THEN RETURN
151 IT%=-1
155 DIM IT%(NB) :REM TRACK INDEX ARRAY
160 DIM IS%(NB) :REM SECTOR ARRAY INDEX
165 DIM K1$(NR) :REM PRIMARY KEY VALUE
170 DIM RR%(NR) :REM RELATIVE RECORD LIST PER KEY
175 RETURN
200 REM *************************
201 REM UPDATE RECORD, CR
202 REM
205 GOSUB 900
210 PRINT#CC,”U1:”C0;D;T;S
215 PRINT#CC,”B-P:”C0;RP
220 FOR CF=1 TO NF
225 GOSUB 1000:IF E THEN 1900
230 NEXT CF
235 PRINT#C,”U2:”C0;D;T;S
240 GOSUB 1000:IF E THEN 1900
245 RETURN
300 REM ****************************
301 REM READ RECORD, CR
302 REM
305 GOSUB900
310 PRINT#CC,”U1:”C0;D;T;S
315 PRINT#CC,”B-P:”C0;RP
320 GOSUB 1000:IF E THEN 1900
325 FOR CF=1 TO NF
330 GOSUB 600
335 NEXT CF
340 RETURN
400 REM **************************
401 REM UPDATE FIELD(CF) OF RECORD CR, SINGLE FIELD UPDATE
402 REM
405 GOSUB 900
86