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]
12  MAT S=ZER
13  T0=0
14  F6=0
100  FILES C1,C0
110  C$="0123456789"
200  READ C9,C8,C7,P9
210  DATA 13,4,8,13
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  T$="M"
1000  PRINT H$[1,2]"UPDATE ONE OF THE FOLLOWING:"
1005  PRINT 
1010  PRINT "(1) S#"
1015  PRINT "(2) PTY"
1020  PRINT "(3) C#"
1025  PRINT "(4) TRA"
1030  PRINT "(5) DT"
1035  PRINT "(6) SL"
1040  PRINT "(7) CU#"
1045  PRINT "(8) I#"
1050  PRINT "(9) LS"
1055  PRINT "(10) FSL"
1060  PRINT "(11) TM"
1065  PRINT "(12) TAX RT"
1070  PRINT "(13) SM"
1075  PRINT "(14) AG"
1080  PRINT "(15) M$"
1085  PRINT "(16) R$"
1090  PRINT "(17) DELETE"
1095  PRINT 
1100  PRINT "MODIFY#";
1105  INPUT A$
1107  IF A$="END" THEN 9999
1110  GOSUB 4200
1115  IF B1 THEN 1100
1120  IF Z>0 AND Z<18 THEN 1140
1125  GOSUB 4240
1130  GOTO 1100
1140  T0=Z
2000  PRINT 
2005  B$="MODIFY "
2010  GOSUB 4400
2015  IF B2 THEN 1000
2020  IF B1 THEN 2035
2025  PRINT '7'7"UNIT NOT ON FILE";H$[3,4];H$[4,4];H$[2,2];
2030  GOTO 2005
2035  REM
2160  IF S[8]#0 AND S[8]#3 THEN 2345
2165  PRINT '7"TA/NAC UNIT";
2170  INPUT A$
2345  REM
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 2000
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  PRINT "OLD S#=";C1
2402  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'7"UNIT IN USE"
2430  GOSUB 4485
2435  GOTO 2000
2440  T2=C1
2445  GOSUB 3100
2450  C1=T1
2452  GOSUB 4485
2455  GOSUB 3200
2460  GOSUB 9200
2465  GOTO 2000
2500  PRINT "OLD PTY=";S[1]
2502  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  PRINT "OLD C#=";S[2]
2570  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
2600  GOTO 2000
2610  PRINT "OLD TRA=";S[3]
2620  GOSUB 6035
2625  GOTO 2577
2635  GOSUB 4800
2637  PRINT "OLD DATE=";X2;"/";X3;"/";X1
2640  GOSUB 6055
2645  T1=S[K3]
2650  GOSUB 3300
2655  T2=S[K3]
2660  GOTO 2590
2665  PRINT "OLD SL=";S[5]
2670  GOSUB 6075
2680  GOTO 2577
2690  PRINT "OLD CU#=";S[6]
2695  GOSUB 6090
2705  GOTO 2577
2710  PRINT "OLD I#=";S[7]
2715  GOSUB 6110
2730  GOTO 2577
2735  PRINT "OLD LS=";S[8]
2740  GOSUB 6125
2750  GOTO 2577
2755  PRINT "OLD FSL=";S[9]
2760  GOSUB 6135
2770  GOTO 2577
2775  GOSUB 2900
2776  K3=T0-1
2777  T1=S[K3]*S5
2778  GOSUB 4900
2779  T2=S[K3-1]*S5
2780  GOTO 2590
2782  PRINT "OLD TAX RT=";S[16]*100+S[11]
2783  GOSUB 6235
2784  GOTO 2590
2785  PRINT "OLD SM=";S[12]
2790  GOSUB 6155
2800  GOTO 2577
2805  PRINT "OLD AG=";C[R2,7]
2810  GOSUB 6180
2830  T1=C[R2,7]
2835  C[R2,7]=T2=Z
2840  GOSUB 4330
2845  GOTO 2595
2850  PRINT "OLD M$=";S6
2851  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  PRINT "OLD R$=";S[15]
2877  GOSUB 6230
2880  T1=S[15]
2885  GOSUB 4500
2890  T2=S[15]
2895  GOTO 2590
2900  B$="M"
2905  IF S5=1 THEN 2915
2910  B$="A"
2915  PRINT "OLD TM=";S[10];B$
2920  RETURN 
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 
