10  REM*** BAEDP TIMESHARE BILLING.
20  REM*** THIS PROGRAM PRODUCES INVOICES FROM FILE LOCSRT.
30  REM***
40  REM***
50  FILES LOCSRT
60  DIM D[101,5],G[101,5]
70  MAT D=ZER
80  MAT G=ZER
90  DIM A$[72],N$[10],M$[72],T$[72],J$[2]
100  N$="0123456789"
110  PRINT "INVOICE NO. TO BEGIN PRINTING"
120  INPUT B1
130  PRINT "MONTH YEAR"
140  INPUT M$
150  PRINT "MESSAGE"
160  PRINT "?"
170  ENTER 255,R9,T$
180  IF R9<0 THEN 150
190  IF  END #1 THEN 690
200  REM*** IMAGES
210  IMAGE 55X,"INVOICE NO. ",4D
220  IMAGE 24X,"BAEDP TIMESHARE SERVICE"
230  IMAGE 5X,20A
240  IMAGE 5X,"DIV. ",2A," LOC. ",4A
250  IMAGE 5X,"BLDG. ",14A
260  IMAGE 5X,"BILLING CODE ",3A
270  IMAGE 26X,"I.D. ",4A," SYSTEM ",A
280  IMAGE 10X,"TERMINAL TIME:",4D.D," HOURS AT $2.70/HOUR  ",2X,6D.2D
290  IMAGE 10X,"DISC STORAGE:",6D.D," BLOCKS AT $.07/BLOCK",2X,6D.2D
300  IMAGE 10X,"SPECIAL CHARGES:",28X,6D.2D
310  IMAGE 54X,"*********"
320  IMAGE 51X,"***NO CHARGE***"
330  IMAGE 5X,67A
340  IMAGE 10X,"TOTAL CHARGES:",26X,"$ ",2X,6D.2D
350  REM*** PRINT INVOICES
360  I9=0
370  PRINT '12
380  READ #1;A$,T1,D1,M1,M2,M3
390  M1=INT(M1*100+.5)
400  M1=M1/100
410  M2=INT(M2*100+.5)
420  M2=M2/100
430  M3=INT(M3*100+.5)
440  M3=M3/100
445  IF M1=0 AND M2=0 AND M3=0 THEN 380
450  I9=I9+1
460  IF I9<B1 THEN 490
470  REM*** GOSUB TO PRINT INVOICE
480  GOSUB 960
490  IF A$[46,46]="R" THEN 510
500  IF A$[46,46]#"G" THEN 380
510  REM*** GOSUB FOR DIVISION INDEX.
520  J$=A$[26,27]
530  GOSUB 1320
540  D[J1,1]=D[J1,1]+T1
550  D[J1,2]=D[J1,2]+D1
560  D[J1,3]=D[J1,3]+M1
570  D[J1,4]=D[J1,4]+M2
580  D[J1,5]=D[J1,5]+M3
590  IF A$[46,46]#"G" THEN 380
600  REM*** GOSUB FOR GROUP INDEX
610  J$=A$[47,48]
620  GOSUB 1320
630  G[J1,1]=G[J1,1]+T1
640  G[J1,2]=G[J1,2]+D1
650  G[J1,3]=G[J1,3]+M1
660  G[J1,4]=G[J1,4]+M2
670  G[J1,5]=G[J1,5]+M3
680  GOTO 380
690  REM*** GROUP MASTER INVOICES.
700  READ #1,1
710  IF  END #1 THEN 850
720  READ #1;A$,T1,D1,M1,M2,M3
730  IF A$[46,46]#"M" THEN 720
740  J$=A$[47,48]
750  GOSUB 1320
760  REM*** PRINT GROUP MASTER INVOICE
770  T1=G[J1,1]
780  D1=G[J1,2]
790  M1=G[J1,3]
800  M2=G[J1,4]
810  M3=G[J1,5]
820  I9=I9+1
830  GOSUB 960
840  GOTO 720
850  REM*** PRINT DIVISION TOTALS
860  FOR I=1 TO 100
870  FOR J=1 TO 5
880  D[101,J]=D[101,J]+D[I,J]
890  NEXT J
900  NEXT I
910  FOR I=1 TO 101
920  IF D[I,1]=0 AND D[I,2]=0 AND D[I,3]=0 AND D[I,4]=0 AND D[I,5]=0 THEN 940
930  GOSUB 1460
940  NEXT I
950  END 
960  REM*** THIS ROUTINE PRINTS AN INVOICE.
970  PRINT 
980  PRINT  USING 210;I9
990  PRINT 
1000  PRINT  USING 220
1010  PRINT 
1020  PRINT TAB(30);M$
1030  PRINT LIN(1)
1040  PRINT  USING 230;A$[6,25]
1050  PRINT  USING 240;A$[26,27],A$[28,31]
1060  PRINT  USING 250;A$[32,45]
1070  PRINT  USING 260;A$[46,48]
1080  PRINT 
1090  PRINT  USING 270;A$[1,4],A$[5,5]
1100  PRINT LIN(1)
1110  PRINT  USING 280;T1/60,M1
1120  PRINT 
1130  PRINT  USING 290;D1,M2
1140  PRINT 
1150  PRINT  USING 300;M3
1160  PRINT  USING 310
1170  PRINT  USING 340;M1+M2+M3
1180  PRINT  USING 310
1190  PRINT 
1200  IF A$[46,46]="R" THEN 1240
1210  IF A$[46,46]="G" THEN 1240
1220  PRINT  USING 320
1230  GOTO 1250
1240  PRINT 
1250  PRINT LIN(1)
1260  PRINT  USING 330;T$
1270  IF I9/2=INT(I9/2) THEN 1300
1280  PRINT LIN(3)
1290  GOTO 1310
1300  PRINT '12
1310  RETURN 
1320  REM*** ROUTINE TO CONVERT J$ TO SUBSCRIPT J1.
1330  FOR J2=1 TO 10
1340  IF J$[1,1]=N$[J2,J2] THEN 1390
1350  NEXT J2
1360  PRINT "INVALID SUBSCRIPT"
1370  PRINT A$
1380  STOP 
1390  J1=(J2-1)*10
1400  FOR J2=1 TO 10
1410  IF J$[2,2]=N$[J2,J2] THEN 1440
1420  NEXT J2
1430  GOTO 1360
1440  J1=J1+J2
1450  RETURN 
1460  REM*** ROUTINE TO PRINT DIVISION TOTALS FOR DIV. I-1.
1470  PRINT '12
1480  IMAGE 24X,"TOTALS FOR DIVISION ",2D
1490  IMAGE 24X,"TOTALS FOR ALL DIVISIONS"
1500  PRINT LIN(1)
1510  IF I#101 THEN 1540
1520  PRINT  USING 1490
1530  GOTO 1550
1540  PRINT  USING 1480;I-1
1550  PRINT LIN(1)
1560  T1=D[I,1]
1570  D1=D[I,2]
1580  M1=D[I,3]
1590  M2=D[I,4]
1600  M3=D[I,5]
1610  PRINT  USING 280;T1/60,M1
1620  PRINT 
1630  PRINT  USING 290;D1,M2
1640  PRINT 
1650  PRINT  USING 300;M3
1660  PRINT  USING 310
1670  PRINT  USING 340;M1+M2+M3
1680  PRINT  USING 310
1684  IF I=101 THEN 1690
1685  PRINT LIN(1)
1686  PRINT "     DIVISIONAL ACCOUNTANTS:"
1687  PRINT "     PLEASE DISTRIBUTE INDIVIDUAL INVOICES TO TIMESHARE USERS."
1690  RETURN 
1700  END 
