1  H$='29'31'13'26'30
10  DIM A$[20],B$[20],C$[10],D$[10],H$[5],T$[10]
11  DIM C[4,8],S[16],D[8],P[13]
100  FILES C1,C0
110  C$="0123456789"
200  READ C9,C8,C7,P9
210  DATA 13,4,8,13
215  MAT S=ZER
220  GOSUB 9100
240  MAT  READ P
245  DATA 1000,3800,4300,4900,6500,7500,7560,7760,8760,9760,9870,10350,10400
260  DATA "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13"
300  PRINT H$[1,2];
310  B$="CURRENT DATE (MDDYY)"
320  GOSUB 4600
330  D5=Z
400  PRINT H$[1,2]"ADD OR MODIFY UNIT";
410  INPUT T$
412  IF T$="END" THEN 9999
415  IF T$[1,1]="A" THEN 1000
420  IF T$[1,1]="M" THEN 2000
430  GOSUB 4250
440  GOTO 400
1000  REM
1002  B$="ADD "
1003  PRINT H$[1,2];
1005  GOSUB 4400
1010  IF B2 THEN 400
1015  IF  NOT B1 THEN 1030
1020  PRINT '7'7"UNIT IN USE";H$[3,5];
1025  GOTO 1002
1030  S[1]=C0
1035  F1=0
1037  GOSUB 6000
1050  K3=2
1055  GOSUB 4500
1060  GOSUB 6035
1075  GOSUB 4500
1080  GOSUB 6055
1090  GOSUB 3300
1100  K3=K3+1
1105  GOSUB 6075
1115  GOSUB 4500
1120  GOSUB 6090
1135  GOSUB 4500
1140  GOSUB 6110
1160  GOSUB 4500
1170  GOSUB 6125
1185  GOSUB 4500
1190  GOSUB 6135
1200  GOSUB 4500
1210  GOSUB 4900
1212  GOSUB 6235
1213  K3=K3+1
1214  T0=T1=T2=0
1215  GOSUB 6155
1230  GOSUB 4500
1235  GOSUB 6180
1260  C[R2,7]=Z
1265  GOSUB 6220
1275  GOSUB 4500
1276  S6=Z
1277  GOSUB 6230
1278  GOSUB 4500
1280  PRINT 
1285  PRINT "ABOVE CORRECT";
1290  INPUT A$
1295  IF A$[1,1]#"Y" THEN 1000
1300  GOSUB 4300
1305  GOSUB 9200
1310  GOTO 1000
2000  B$="MODIFY "
2005  PRINT H$[1,2];
2010  GOSUB 4400
2015  IF B2 THEN 400
2020  IF B1 THEN 2035
2025  PRINT '7'7'7"UNIT NOT ON FILE";H$[3,5];
2030  GOTO 2000
2035  PRINT H$[1,2];
2036  B$=""
2037  FOR K3=1 TO 14
2040  GOTO K3 OF 2050,2060,2065,2070,2075,2080,2085,2090,2095,2100
2045  GOTO K3-10 OF 2105,2110,2115,2135
2050  PRINT "(1) S#:";C1
2055  GOTO 2135
2060  A$="(2) PTY:"
2062  GOTO 2130
2065  A$="(3) C#:"
2067  GOTO 2130
2070  A$="(4) TRA:"
2072  GOTO 2130
2075  GOSUB 4800
2076  PRINT "(5) DT:";X2;"/";X3;"/";X1
2077  GOTO 2135
2080  A$="(6) SL:"
2082  GOTO 2130
2085  A$="(7) CU#:"
2087  GOTO 2130
2090  A$="(8) I#:"
2092  GOTO 2130
2095  A$="(9) LS:"
2097  GOTO 2130
2100  A$="(10) FSL:"
2102  GOTO 2130
2105  A$="(11) TM:"
2106  B$="M"
2107  IF S5=1 THEN 2130
2108  B$="A"
2109  GOTO 2130
2110  PRINT "(12) TAX RT:";S[16]*100+S[11]
2111  GOTO 2135
2115  A$="(13) SM:"
2130  PRINT A$;S[K3-1];B$
2132  B$=""
2135  NEXT K3
2136  PRINT "(14) AG:";C[R2,7]
2140  PRINT "(15) M$:";S6
2145  PRINT "(16) R$:";S[15]
2150  PRINT "(17) DELETE"
2155  PRINT "(18) NO CHANGE"
2160  IF S[8]#0 AND S[8]#3 THEN 2345
2165  PRINT '7"TA/NAC UNIT";
2170  INPUT A$
2345  PRINT 
2350  PRINT "MODIFY#";H$[2,2];
2355  INPUT A$
2360  GOSUB 4200
2365  IF B1 THEN 2350
2370  IF Z=18 THEN 2000
2372  IF Z>0 AND Z<18 THEN 2385
2375  GOSUB 4250
2380  GOTO 2350
2385  T0=Z
2386  IF F6 OR (S[8]#0 AND S[8]#3) OR (T0#8 AND T0#9 AND T0#17) THEN 2390
2387  PRINT '7'7'7"TA/NAC UNIT"
2388  GOTO 2597
2390  GOTO T0 OF 2400,2500,2565,2610,2635,2665,2690,2710,2735,2755
2395  GOTO T0-10 OF 2775,2782,2785,2805,2850,2875,2865
2400  T1=C1
2405  GOSUB 3000
2410  GOSUB 4457
2412  IF B2 THEN 9999
2415  IF  NOT B1 THEN 2440
2420  C1=T1
2425  PRINT '7'7"UNIT IN USE";
2430  GOSUB 4485
2435  GOTO 2597
2440  T2=C1
2445  GOSUB 3100
2450  C1=T1
2452  GOSUB 4485
2455  GOSUB 3200
2460  GOSUB 9200
2465  GOTO 2000
2500  T1=C0
2505  B$=""
2510  GOSUB 3000
2515  GOSUB 4400
2517  IF B2 THEN 9999
2520  IF  NOT B1 THEN 2545
2530  C0=T1
2535  GOTO 2425
2545  T2=C0
2547  D[1]=C0*10^4+(D[1]-INT(D[1]/10^4)*10^4)
2550  GOSUB 3100
2552  C0=T1
2555  GOTO 2452
2565  GOSUB 6000
2577  F1=0
2580  K3=T0-1
2582  T1=S[K3]
2585  GOSUB 4500
2587  T2=S[K3-1]
2590  GOSUB 4300
2595  GOSUB 9200
2597  PRINT H$[3,4];H$[4,5];
2600  GOTO 2350
2610  GOSUB 6035
2625  GOTO 2577
2635  GOSUB 6055
2645  T1=S[K3]
2650  GOSUB 3300
2655  T2=S[K3]
2660  GOTO 2590
2665  GOSUB 6075
2680  GOTO 2577
2690  GOSUB 6090
2705  GOTO 2577
2710  GOSUB 6110
2730  GOTO 2577
2735  GOSUB 6125
2750  GOTO 2577
2755  GOSUB 6135
2770  GOTO 2577
2775  K3=T0-1
2776  T1=S[K3]*S5
2777  GOSUB 4900
2778  T2=S[K3-1]*S5
2780  GOTO 2590
2782  GOSUB 6235
2783  GOTO 2590
2785  GOSUB 6155
2800  GOTO 2577
2805  GOSUB 6180
2830  T1=C[R2,7]
2835  C[R2,7]=T2=Z
2840  GOSUB 4330
2845  GOTO 2595
2850  GOSUB 6220
2852  GOSUB 4500
2857  T1=S6
2860  S6=T2=Z
2862  GOTO 2590
2865  GOSUB 3200
2866  T1=T2=0
2867  GOSUB 9200
2870  GOTO 2000
2875  GOSUB 6230
2880  T1=S[15]
2885  GOSUB 4500
2890  T2=S[15]
2895  GOTO 2590
3000  FOR I=1 TO C7
3010  D[I]=C[R2,I]
3020  NEXT I
3030  RETURN 
3100  FOR I=1 TO C7
3110  C[R2,I]=D[I]
3120  NEXT I
3130  MAT  PRINT #1,R1;C
3140  RETURN 
3200  FOR I=1 TO C7
3210  C[R2,I]=0
3220  NEXT I
3230  C[R2,1]=-1
3240  GOTO 3130
3300  D3=D3-INT(D3/10)*10
3310  S[K3]=D3*10^4+D1*100+D2
3320  RETURN 
4000  B1=0
4002  P=C0
4004  IF C0<9 THEN 4022
4006  P=9
4008  IF C0 >= 9 AND C0 <= 16 THEN 4022
4010  P=10
4012  IF C0 >= 17 AND C0 <= 23 THEN 4022
4014  P=11
4015  IF C0 >= 24 AND C0 <= 27 THEN 4022
4016  P=12
4018  IF C0=28 OR C0=29 THEN 4022
4020  P=13
4022  R=C1
4023  IF P#5 THEN 4025
4024  R=R-900
4025  IF P=1 THEN 4028
4026  R=R+P[P-1]
4028  IF R <= P[P] THEN 4036
4029  PRINT '7'7"SER#>";
4030  X=P[P]
4031  IF P=1 THEN 4033
4032  X=X-P[P-1]
4033  PRINT X;H$[3,5];
4034  B1=1
4035  RETURN 
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 260
4058  FOR N=1 TO C9
4060  READ A$
4062  IF R1<201 THEN 4070
4063  R1=R1-200
4065  NEXT N
4067  PRINT "**";
4068  STOP 
4070  ASSIGN A$,1,W5
4080  RETURN 
4100  B1=0
4102  MAT  READ #1,R1;C
4105  IF C[R2,1]=-1 THEN 4180
4107  B1=1
4110  J=1
4111  FOR I=1 TO 9 STEP 4
4112  S5=SGN(C[R2,J])
4113  C[R2,J]=ABS(C[R2,J])
4114  S[I]=INT(C[R2,J]/10^4)
4115  S[I+1]=C[R2,J]-S[I]*10^4
4116  IF I#9 THEN 4119
4117  S[I+1]=INT(S[I+1]/100)
4118  S[I+2]=C[R2,J]-S[I]*10^4-S[I+1]*100
4119  J=J+2
4120  NEXT I
4122  S[3]=INT(C[R2,2]/10^5)
4125  S[4]=C[R2,2]-S[3]*10^5
4145  S[7]=INT(C[R2,4]/10)
4150  S[8]=C[R2,4]-S[7]*10
4170  S[12]=INT(C[R2,6]/100)
4175  S[13]=C[R2,6]-S[12]*100
4176  S[14]=INT(C[R2,8]/10^5)
4177  S[15]=INT((C[R2,8]-S[14]*10^5)/10)
4178  S[16]=C[R2,8]-S[14]*10^5-S[15]*10
4179  S6=S[13]*10+S[14]
4180  RETURN 
4200  Z=B1=0
4210  FOR I1=1 TO LEN(A$)
4220  FOR I2=1 TO 10
4230  IF A$[I1,I1]=C$[I2,I2] THEN 4280
4240  NEXT I2
4250  PRINT '7"BAD DATA";H$[3,5];
4260  B1=1
4270  RETURN 
4280  Z=Z*10+I2-1
4290  NEXT I1
4295  RETURN 
4300  S[13]=INT(S6/10)
4302  C[R2,1]=S[1]*10^4+S[2]
4305  C[R2,2]=S[3]*10^5+S[4]
4310  C[R2,3]=S[5]*10^4+S[6]
4315  C[R2,4]=S[7]*10+S[8]
4320  C[R2,5]=(S[9]*10^4+S[10]*100+S[11])*S5
4325  C[R2,6]=S[12]*100+S[13]
4327  C[R2,8]=(S6-S[13]*10)*10^5+S[15]*10+S[16]
4330  MAT  PRINT #1,R1;C
4340  RETURN 
4400  B2=0
4402  PRINT B$;"PTY";
4405  INPUT A$
4410  IF A$#"END" THEN 4425
4415  B2=1
4420  RETURN 
4425  GOSUB 4200
4430  IF B1 THEN 4400
4435  IF Z>0 AND Z<31 THEN 4450
4440  GOSUB 4250
4445  GOTO 4400
4450  C0=Z
4455  IF B$="" THEN 4485
4457  B2=0
4460  PRINT "S#";
4462  INPUT A$
4465  IF A$="END" THEN 4415
4470  GOSUB 4200
4475  IF B1 THEN 4460
4476  C1=X=Z
4477  IF C0#5 THEN 4480
4478  X=X-900
4480  IF X>0 THEN 4485
4482  GOSUB 4250
4483  GOTO 4460
4485  GOSUB 4000
4490  IF  NOT B1 THEN 4495
4491  IF B$#"" THEN 4460
4492  RETURN 
4495  GOSUB 4100
4497  RETURN 
4500  PRINT B$;
4505  INPUT A$
4510  GOSUB 4200
4515  IF B1 THEN 4500
4520  IF Z >= K1 AND Z <= K2 THEN 4535
4525  GOSUB 4250
4530  GOTO 4500
4535  IF F1 THEN 4545
4537  S[K3]=Z
4540  K3=K3+1
4545  RETURN 
4600  PRINT B$;
4605  INPUT A$
4610  GOSUB 4200
4612  IF B1 THEN 4600
4615  IF Z<10^6 AND Z>9999 THEN 4630
4620  GOSUB 4250
4625  GOTO 4600
4630  D1=INT(Z/10^4)
4635  IF D1<1 OR D1>12 THEN 4620
4640  D2=INT((Z-D1*10^4)/100)
4645  IF D2<1 OR D2>31 THEN 4620
4650  D3=Z-D1*10^4-D2*100
4655  IF D3<68 OR D3>77 THEN 4620
4660  RETURN 
4800  X0=INT(S[4]/10^4)
4805  X1=70+X0
4810  IF X0<8 THEN 4820
4815  X1=60+X0
4820  X2=INT((S[4]-X0*10^4)/100)
4830  X3=S[4]-X0*10^4-X2*100
4840  RETURN 
4900  PRINT "TM";
4905  INPUT A$
4910  L=LEN(A$)
4915  IF L>1 THEN 4930
4920  GOSUB 4250
4925  GOTO 4900
4930  S5=1
4935  IF A$[L,L]="M" THEN 4950
4940  IF A$[L,L]#"A" THEN 4920
4945  S5=-1
4950  A$=A$[1,L-1]
4955  GOSUB 4200
4960  IF B1 THEN 4900
4965  IF Z<0 OR Z>99 THEN 4920
4970  GOTO 4537
6000  B$="C#"
6010  K1=1
6020  K2=9999
6030  RETURN 
6035  B$="TRA"
6040  K2=9
6045  K1=0
6050  RETURN 
6055  B$="DT"
6060  K3=4
6065  GOSUB 4600
6070  RETURN 
6075  B$="SL"
6080  K2=99
6085  GOTO 6045
6090  B$="CU#"
6095  K1=0
6100  GOTO 6020
6110  B$="I#"
6115  K2=99999.
6120  GOTO 6045
6125  B$="LS"
6130  GOTO 6040
6135  B$="FSL"
6140  GOTO 6080
6155  B$="SM"
6160  K1=1001
6165  K2=1400
6170  RETURN 
6180  B$="AG"
6185  K1=100000.
6190  K2=999999.
6195  F1=1
6200  GOSUB 4500
6210  RETURN 
6220  B$="M$"
6222  K2=999
6223  F1=1
6225  GOTO 6045
6230  B$="R$"
6232  F1=0
6233  K3=15
6234  GOTO 6095
6235  PRINT "TAX RATE";
6240  INPUT A$
6245  GOSUB 4200
6250  IF B1 THEN 6235
6255  IF Z >= 0 AND Z<1000 THEN 6270
6260  GOSUB 4240
6265  GOTO 6235
6270  T1=S[16]*100+S[11]
6275  T2=Z
6280  S[16]=INT(Z/100)
6285  S[11]=Z-S[16]*100
6290  RETURN 
9100  IF  END #2 THEN 9160
9110  FOR I=1 TO 100
9115  READ #2,I
9120  FOR I1=1 TO 4
9125  READ #2;C0,C1,T$,T0,T1,T2,D5,T3
9130  NEXT I1
9135  NEXT I
9140  PRINT "TRANS FILE FULL"
9145  STOP 
9160  IF  END #2 THEN 9170
9165  RETURN 
9170  PRINT "*";
9175  STOP 
9200  T3=S[3]
9205  PRINT #2;C0,C1,T$[1,1],T0,T1,T2,D5,T3
9210  IF TYP(-2)=3 THEN 9140
9220  PRINT #2; END 
9230  RETURN 
9999  END 
