10  DIM A$[20],Y$[10],S$[54],T$[54],X$[1],B$[20]
11  DIM Q[30],P[13],C[4,8],D[2,2],E[100]
20  Y$="0123456789"
100  FILES C1,G10A,G0,S1
150  PRINT "(1) TOP OF FORM OR (2) ABDICK";
160  INPUT P5
200  READ C9,C8,C7,G8
210  DATA 13,4,8,3
220  MAT  READ P
230  DATA 1000,3800,4300,4900,6500,7500,7560,7760,8760,9760,9870,10350,10400
235  MAT  READ Q
236  DATA 2100,3101,3300,3200,3400,4100,4200,0,1102,1104,1106,1108,1114,1118,1122
237  DATA 1126,1400,1401,1402,1403,1404,1405,1420,1300,1301,1302,1303,1200,1201,3120
240  DATA "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13"
245  DATA "G10A","G10B","G10C"
300  PRINT "INVOICE DATE";
305  INPUT X
310  GOSUB 4800
355  D1=X1
360  D2=X2
365  D3=X3
370  PRINT "MONTH";
375  INPUT B$
400  PRINT "ENTER CUST INTERVAL TO BE PRINTED (A1,A2)";
405  INPUT A1,A2
410  IF A1>0 AND A2>0 AND A1 <= A2 THEN 430
415  PRINT '7'7'7"INVALID DATA"
417  GOTO 400
430  PRINT "BEGINNING INVOICE#";
435  INPUT G0
440  G0=G0-1
500  P9=66
510  N1=1
520  F5=F9=0
1000  IF  END #4 THEN 1500
1005  READ #4;A
1010  IF SGN(A)#-1 THEN 1050
1015  IF ABS(A)>A2 THEN 1520
1020  IF F5 THEN 1047
1025  IF ABS(A)#A1 THEN 1005
1030  F5=1
1035  A0=ABS(A)
1040  F6=F7=T1=T0=G1=0
1042  MAT E=ZER
1045  GOTO 1005
1047  GOSUB 1100
1048  GOTO 1035
1050  IF  NOT F5 THEN 1005
1055  X=A
1060  GOSUB 3000
1065  IF S3#6 OR S4>2 OR S5#1 THEN 1005
1070  IF G1=C[R2,7] THEN 1086
1072  G2=C[R2,7]
1075  IF G1=0 THEN 1085
1080  GOSUB 1100
1082  F6=F7=T1=T0=0
1084  MAT E=ZER
1085  G1=G2
1086  F7=F7+1
1087  IF F7>100 THEN 1092
1088  E[F7]=A
1090  GOTO 1005
1092  PRINT '7'7"CUST";A0;"HAS > 100 UNITS UNDER AGREEMENT";G1
1095  STOP 
1100  S0=F8=0
1102  FOR I0=1 TO F7
1103  X=E[I0]
1105  GOSUB 3000
1150  IF F6 THEN 1170
1155  GOSUB 5300
1157  G0=G0+1
1160  GOSUB 8000
1165  F6=1
1170  GOSUB 2000
1175  NEXT I0
1180  IF  NOT F6 THEN 1450
1182  GOSUB 2100
1185  IF  NOT F8 THEN 1330
1190  FOR I0=1 TO F7
1192  X=E[I0]
1195  GOSUB 3000
1200  PRINT TAB(11);
1205  Z$="#### "
1210  X$=" "
1215  Z[1]=S9
1220  GOSUB 9000
1225  GOSUB 3400
1227  PRINT ", ";
1230  GOSUB 3500
1232  IF S8>99 THEN 1240
1234  PRINT "  TE -";S8
1236  GOTO 1310
1240  Z$=" #.##% "
1242  X$=" "
1245  Z[1]=S8*.01
1250  GOSUB 9000
1255  Z$="####.##  "
1260  Z[1]=S6+S7
1265  GOSUB 9000
1270  GOSUB 3100
1280  T0=T0+X1
1290  Z[1]=X1*.01
1300  GOSUB 9000
1305  PRINT 
1310  P9=P9+1
1315  GOSUB 3600
1320  NEXT I0
1330  K=54-P9
1335  GOSUB 9900
1336  FOR I=1 TO 400
1337  PRINT '18;
1338  NEXT I
1340  X=T1
1345  GOSUB 3300
1347  PRINT 
1350  IF F8 THEN 1390
1352  IF S8>99 THEN 1360
1354  T0=0
1356  GOTO 1390
1360  PRINT TAB(65);
1365  Z$="#.##%"
1370  Z[1]=S8*.01
1375  GOSUB 9000
1377  X=S8*INT(T1/100)
1380  GOSUB 3105
1385  T0=X1
1390  IF T0#0 THEN 1405
1395  PRINT TAB(71)"TE -";"";S8
1400  GOTO 1425
1405  X=T0
1415  GOSUB 3300
1425  K=5
1430  GOSUB 9900
1435  X=T0+T1
1440  GOSUB 3300
1445  P9=63
1450  IF F9 THEN 9999
1455  RETURN 
1500  N1=N1+1
1505  IF N1>2 THEN 1520
1510  ASSIGN "S2",4,W5
1515  GOTO 1000
1520  IF  NOT F5 THEN 1535
1525  F9=1
1530  GOTO 1047
1535  PRINT '7'7'7"BEGINNING CUST#";A1;"NOT ON CUST/UNIT SORT FILE"
1540  STOP 
2000  IF S0=S1 THEN 2035
2001  IF S0=0 THEN 2003
2002  GOSUB 2100
2003  I5=S6+S7
2004  S0=S1
2005  PRINT TAB(11)"DATAPOINT ";
2010  GOSUB 3400
2015  PRINT 
2017  P9=P9+1
2018  GOSUB 3600
2020  PRINT TAB(11)"SERIAL NUMBER: ";
2025  I2=I4=0
2030  I3=1
2035  IF I2<3 THEN 2065
2040  PRINT 
2045  I3=1
2047  I2=0
2050  PRINT TAB(26);
2055  P9=P9+1
2060  GOSUB 3600
2065  IF I3 THEN 2075
2070  PRINT ",";
2075  I3=0
2080  GOSUB 3500
2085  I4=I4+1
2090  I2=I2+1
2092  IF A0=S9 THEN 2095
2093  F8=1
2095  RETURN 
2100  PRINT TAB(56);
2105  IF I4>1 THEN 2120
2110  X=I5*100
2115  GOTO 2147
2120  Z$="### @ ####.##"
2125  X$=" "
2130  Z[1]=I4
2135  Z[2]=I5
2140  GOSUB 9000
2145  X=I5*I4*100
2147  T1=T1+X
2150  GOSUB 3300
2155  PRINT 
2165  P9=P9+2
2170  GOSUB 3600
2175  RETURN 
3000  C0=S1=INT(X/10^4)
3010  R=S2=X-S1*10^4
3020  GOSUB 3200
3030  IF P#5 THEN 3040
3035  R=R-900
3040  IF P=1 THEN 3050
3045  R=R+P[P-1]
3050  GOSUB 4000
3055  IF B1 THEN 3060
3057  PRINT "UNIT";C0;",";S2;"NOT ON FILE FOR CUST. NO.";A0
3058  STOP 
3060  RETURN 
3100  X=S8*(S6+S7)
3105  X1=INT(X/100)
3110  IF X-X1*100<50 THEN 3120
3115  X1=X1+1
3120  RETURN 
3200  P=C0
3205  IF C0<9 THEN 3290
3210  P=9
3215  IF C0 <= 16 THEN 3290
3220  P=10
3225  IF C0 <= 23 THEN 3290
3230  P=11
3235  IF C0 <= 27 THEN 3290
3240  P=12
3245  IF C0 <= 29 THEN 3290
3250  P=13
3290  RETURN 
3300  Z$="########"
3305  X$=" "
3310  Z[1]=X
3315  PRINT TAB(71)" ";
3320  GOSUB 9000
3330  PRINT 
3340  RETURN 
3400  IF S1#8 THEN 3435
3425  PRINT "VT06";
3430  GOTO 3495
3435  Z$="####-### "
3440  X$="0"
3445  X=INT(Q[S1]/1000)
3450  Z[2]=Q[S1]-X*1000
3455  GOTO X OF 3460,3470,3480,3490
3460  Z[1]=2200
3465  GOTO 3492
3470  Z[1]=3000
3475  GOTO 3492
3480  Z[1]=3300
3485  GOTO 3492
3490  Z[1]=3360
3492  GOSUB 9000
3495  RETURN 
3500  Z$="####  "
3502  IF S4#0 THEN 3510
3504  Z$[5]="TA"
3510  X$="0"
3520  Z[1]=S2
3530  GOSUB 9000
3540  RETURN 
3600  IF P9<53 THEN 3630
3610  GOSUB 8000
3630  RETURN 
4000  REM
4036  X=R/C8
4038  X1=INT(X)
4040  X2=INT((X-X1)*100)
4042  FOR I=1 TO (C8-1)
4044  IF X2=I*25 THEN 4054
4046  NEXT I
4048  R1=X1
4050  R2=C8
4052  GOTO 4057
4054  R1=X1+1
4056  R2=I
4057  RESTORE 240
4058  FOR N5=1 TO C9
4059  READ A$
4060  IF R1<201 THEN 4100
4062  R1=R1-200
4065  NEXT N5
4067  PRINT "ERR IN P";
4068  STOP 
4100  B1=0
4101  ASSIGN A$,1,W5
4102  MAT  READ #1,R1;C
4105  IF C[R2,1]=-1 THEN 4195
4107  B1=1
4108  S3=INT(C[R2,2]/10^5)
4109  S4=C[R2,4]-INT(C[R2,4]/10)*10
4110  S5=SGN(C[R2,5])
4115  S6=INT(C[R2,8]/10^5)
4120  S7=INT((C[R2,8]-S6*10^5)/10)
4125  S8=C[R2,8]-S6*10^5-S7*10
4130  X=INT(ABS(C[R2,5])/100)
4135  S8=S8*100+ABS(C[R2,5])-X*100
4140  S9=C[R2,3]-INT(C[R2,3]/10^4)*10^4
4150  S6=(C[R2,6]-INT(C[R2,6]/100)*100)*10+S6
4195  RETURN 
4700  J=1
4705  Z$=""
4710  FOR I=I1 TO LEN(T$)
4715  F2=1
4720  IF T$[I,I]='17 THEN 4780
4725  F2=2
4730  IF T$[I,I]='18 THEN 4780
4735  Z$[J,J]=T$[I,I]
4740  J=J+1
4742  IF B3 THEN 4765
4745  IF T$[I,I]="." THEN 4755
4750  IF T$[I,I]#"," THEN 4765
4755  Z$[J,J]=" "
4760  J=J+1
4765  NEXT I
4770  F2=3
4780  RETURN 
4800  X1=INT(X/10^4)
4810  X2=INT((X-X1*10^4)/100)
4820  X3=X-X1*10^4-X2*100
4830  RETURN 
4900  X=INT(D[M1,1]/100)
4902  READ #3,4
4905  FOR J1=1 TO 52
4907  READ #3;X1
4910  IF X<X1 THEN 4925
4920  NEXT J1
4925  READ #3,2
4930  FOR J=1 TO J1
4935  READ #3;Z$
4940  NEXT J
4950  RETURN 
5300  X=A0
5307  RESTORE 245
5310  FOR M=1 TO G8
5312  READ A$
5315  IF X<401 THEN 5340
5320  X=X-400
5325  NEXT M
5330  T$="   "
5335  GOTO 5397
5340  M0=INT(X/2)
5345  M1=2
5350  IF M0*2=X THEN 5365
5355  M0=M0+1
5360  M1=1
5365  ASSIGN A$,2,W5
5390  READ #2,M0;S$,D[1,1],D[1,2],T$,D[2,1],D[2,2]
5392  IF M1=2 THEN 5397
5395  T$=S$
5397  RETURN 
5400  I1=1
5410  GOSUB 4700
5415  GOTO F2 OF 5420,5440,5465
5420  PRINT TAB(11);Z$
5425  P9=P9+1
5430  I1=I+1
5435  GOTO 5410
5440  PRINT TAB(11);Z$;
5445  IF D[M1,1]=0 THEN 5457
5450  GOSUB 4900
5455  PRINT ", ";Z$;"   ";D[M1,1];
5457  PRINT 
5460  GOTO 5425
5465  IF Z$="" THEN 5495
5470  PRINT TAB(11)"ATTN: ";Z$
5480  P9=P9+1
5495  RETURN 
8000  GOTO P5 OF 8005,8020
8005  PRINT '12'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18;
8010  GOTO 8030
8020  K=66-P9
8025  GOSUB 9900
8030  K=6
8032  GOSUB 9900
8035  PRINT TAB(69);
8040  Z$="######"
8045  X$=" "
8050  Z[1]=G0
8055  GOSUB 9000
8060  K=2
8065  GOSUB 9900
8070  Z$="A####"
8075  X$="0"
8080  Z[1]=A0
8085  PRINT TAB(40);
8090  GOSUB 9000
8095  PRINT 
8097  PRINT 
8100  P9=0
8105  GOSUB 5400
8110  K=7-P9
8115  GOSUB 9900
8120  Z$="  ##/##/##    "
8125  X$=" "
8130  Z[1]=D1
8135  Z[2]=D2
8140  Z[3]=D3
8145  GOSUB 9000
8150  Z$="####-##"
8155  X$="0"
8160  Z[1]=INT(G1/100)
8165  Z[2]=G1-Z[1]*100
8170  GOSUB 9000
8175  K=4
8180  GOSUB 9900
8185  PRINT TAB(11)"LEASE PERIOD FOR THE MONTH OF ";B$
8190  K=2
8195  GOSUB 9900
8200  P9=24
8205  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[72],Z$[72]
9070  Z0=Z9-1
9080  Z0=Z0+1
9090  IF Z0=LEN(Z$)+1 THEN 9650
9100  IF Z$[Z0,Z0]="#" THEN 9170
9110  IF Z$[Z0,Z0+1]=".#" THEN 9170
9120  IF Z$[Z0,Z0+1]="+#" THEN 9150
9130  V$[V,V]=Z$[Z0,Z0]
9131  V=V+1
9140  GOTO 9080
9150  Z4=0
9160  GOTO 9080
9170  Z=100
9180  Z6=Z[Z2]
9190  Z9=Z0-1
9200  Z9=Z9+1
9210  IF Z$[Z9,Z9]="." THEN 9240
9220  IF Z$[Z9,Z9]="#" THEN 9200
9230  GOTO 9280
9240  IF Z5#1 THEN 9280
9250  Z5=0
9260  Z=Z9
9270  GOTO 9200
9280  IF Z#100 THEN 9300
9290  Z=Z9
9300  IF Z4=1 THEN 9350
9310  IF Z6 >= 0 THEN 9340
9320  V$[V,V]="-"
9321  V=V+1
9330  GOTO 9350
9340  V$[V,V]=" "
9341  V=V+1
9350  IF Z=Z9 THEN 9380
9360  Z6=ABS(Z6)+5*10^(Z-Z9)
9370  GOTO 9390
9380  Z6=ABS(Z6)+.5
9390  Z7=10^(Z-Z0-1)
9400  Z4=10*Z7
9410  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9420  IF Z1#0 THEN 9460
9430  V$[V,V]="."
9431  V=V+1
9440  Z3=0
9450  GOTO 9610
9460  Z8=INT(Z6/Z7)
9470  IF Z6<Z4 THEN 9500
9480  V$[V,V]="#"
9481  V=V+1
9490  GOTO 9600
9500  Z6=Z6-Z8*Z7
9510  IF Z8=0 THEN 9530
9520  Z3=0
9530  IF Z3=0 THEN 9590
9540  IF Z1#1 THEN 9570
9550  V$[V,V]="0"
9551  V=V+1
9560  GOTO 9600
9570  V$[V,V]=X$
9571  V=V+1
9580  GOTO 9600
9590  V$[V,V]=Y$[Z8+1,Z8+1]
9591  V=V+1
9600  Z7=Z7/10
9610  NEXT Z1
9620  Z3=Z4=Z5=Z7=1
9630  Z2=Z2+1
9640  GOTO 9070
9650  PRINT V$;
9660  V$=""
9670  RETURN 
9900  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9999  END 
