5  COM D0,D1,S0
10  REM*** BAEDP TIMESHARE BILLING.
20  REM*** THIS PROGRAM COMBINES INDIVIDUAL SYSTEM USAGE FILES
30  REM*** INTO FILE USFILM. EACH ENTRY IS IN THE FORMAT
40  REM*** NUMERIC ID/SYSTEM(10001 TO 269999), NUMERIC MONTHLY
50  REM*** TIME (MINUTES), AND NUMERIC AVERAGE DISK SPACE (BLOCKS).
60  REM*** 
70  PRINT "COMBINING SYSTEM USAGE FILES TO 'USFILM'"
80  FILES *,*,*,*,*,*,*,*,*,*
90  DIM I$[6]
95  DIM N$[10]
96  N$="0123456789"
100  DIM A[9],B[9],C[9]
110  REM*** CHECK COMPLETION OF USAGE FILES.
120  I$="USFIL"
150  FOR I=1 TO S0
160  I$[6,6]=N$[I+1,I+1]
170  ASSIGN I$,I,R8
180  IF R8<3 THEN 200
190  PRINT "FILE ";I$;" STATUS= ";R8
195  STOP 
200  IF  END #I THEN 220
210  GOTO 240
220  PRINT "FILE ";I$;" IS INCOMPLETE"
230  STOP 
240  READ #I;A1,B1,C1
250  IF A1#26999 THEN 240
255  READ #I,1
260  NEXT I
270  REM*** A(I)=I.D. FORM USFIL I.
280  REM*** B(I)=TIME FROM USFIL I.
290  REM*** C(I)=DISK FROM USFIL I.
300  REM***
310  REM*** CONVERT I.D.'S TO I.D./SYS.  PUT DATA IN USFILM.
320  I$[6,6]="M"
330  ASSIGN I$,10,R8
340  IF R8=0 THEN 370
350  PRINT "FILE ";I$;" STATUS= ";R8
360  STOP 
370  REM*** INITIALIZE
375  PRINT #10,1; END 
380  MAT A=ZER
390  MAT B=ZER
400  MAT C=ZER
410  FOR I=1 TO S0
420  READ #I;A[I],B[I],C[I]
430  NEXT I
440  REM*** COMPUTE MIN A(I) AND I
450  I1=1
460  M1=999999.
470  FOR I=1 TO S0
480  IF A[I] >= M1 THEN 510
490  M1=A[I]
500  I1=I
510  NEXT I
520  REM*** IF M1=999999, USFILM IS COMPLETE.
530  IF M1#999999. THEN 550
540  CHAIN "CHECK"
550  M1=M1*10+I1
560  IF  END #10 THEN 580
570  GOTO 610
580  PRINT "USFILM IS TOO SMALL. KIL AND RE-OPEN USFILM"
590  PRINT "TO A LARGER SIZE, AND RUN DRIVER(OPTION 3)."
600  STOP 
610  IF B[I1]=0 AND C[I1]=0 THEN 630
620  PRINT #10;M1,B[I1],C[I1], END 
630  IF  END #I1 THEN 660
640  READ #I1;A[I1],B[I1],C[I1]
650  GOTO 440
660  A[I1]=999999.
670  GOTO 440
9999  END 
