1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APCKPT:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 10 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  REM  H$=""
10  DIM A$[20],I$[10],T$[58],M$[58],X$[1],H$[5]
11  DIM P[29],S[9,2],D[2]
100  FILES PI1,PN1,PN2,PN3
120  C8=3
121  PRINT "USE INPUT FILE:  PI1,PI2";
122  INPUT A$
123  IF A$="PI1" THEN 127
124  IF A$="PI2" THEN 127
125  PRINT '7'7"WHAT";
126  GOTO 122
127  ASSIGN A$,1,W5
145  DATA "PR","MA","RI","NH","ME","VT","CT","NJ","NY","PA","DE"
146  DATA "DC","MD","VA","WV","NC","SC","GA","FL","AL","TN","MS"
147  DATA "KY","OH","IN","MI","IA","WI","MN","SD","ND","MT","IL"
148  DATA "MO","KS","NB","LA","AR","OK","TX","CO","WY","ID","UT"
149  DATA "AZ","NM","NV","CA","HI","PACIFIC ISLANDS","OR","WA","AK"
150  DATA 10,28,30,39,50,60,70,90,150,197,200,206,220,247,270,290
151  DATA 300,320,350,370,386,400,430,460,480,500,530,550,570,580
152  DATA 590,600,630,660,680,700,716,730,750,800,820,832,840,850
153  DATA 870,890,900,967,969,970,980,995
200  PRINT H$[1,2]"CHECK DATE";
205  INPUT X
210  GOSUB 4800
215  IF X1>0 AND X1<13 THEN 230
220  PRINT '7'7"INVALID DATE";H$[3,5];
225  GOTO 200
230  IF X2<1 OR X2>31 THEN 220
235  IF X3<72 OR X3>99 THEN 220
240  D5=X
250  PRINT "BEGINNING CHECK#";
260  INPUT P6
270  PRINT "CHECKS READY";
275  INPUT A$
500  P9=42
1000  REM
1005  T=T1=F1=F2=0
1010  FOR I2=1 TO 200
1015  READ #1,I2;I$
1020  IF I$="" THEN 1065
1025  MAT  READ #1;P
1027  IF P[28]>0 THEN 1070
1030  IF F2 THEN 1045
1035  IF ABS(P[28])<P6 THEN 1065
1040  IF ABS(P[28])>P6 THEN 1075
1042  F2=1
1045  IF ABS(P[28])=P6 THEN 1060
1050  GOSUB 3000
1055  T=T1=F1=0
1057  P6=ABS(P[28])
1060  GOSUB 2000
1065  NEXT I2
1070  IF F2 THEN 1085
1075  PRINT '7'7"BEG. CHECK# NOT ON FILE"
1080  STOP 
1085  GOSUB 3000
1087  K=42-P9
1090  GOSUB 9900
1095  END 
2000  IF F1 THEN 2025
2010  U6=P[1]
2020  GOSUB 4700
2022  F1=1
2025  GOSUB 4100
2030  G0=0
2035  FOR I0=1 TO 9
2040  IF S[I0,1]#9000 OR S[I0,2]#9115 THEN 2045
2042  G0=G0+P[I0+18]
2045  NEXT I0
2050  REM
2095  PRINT TAB(19);I$;TAB(37);
2100  X=P[2]
2105  GOSUB 4300
2107  PRINT TAB(48);
2110  P[3]=P[3]-G0
2112  S=SGN(P[3])
2115  X=ABS(P[3])*100
2125  GOSUB 4400
2130  PRINT ".";
2140  GOSUB 4450
2141  IF  NOT G0 THEN 2152
2142  PRINT " ";
2143  S=SGN(G0)
2144  X=ABS(G0)*100
2145  Z$=" #####"
2146  X$=" "
2147  X1=INT(X/100)
2148  X2=X-X1*100
2149  GOSUB 4407
2150  PRINT ".";
2151  GOSUB 4450
2152  PRINT TAB(71);
2154  P[3]=P[3]+G0
2155  S=SGN(P[3])
2156  X=ABS(P[3])*100
2160  GOSUB 4400
2165  PRINT ".";
2170  GOSUB 4450
2172  T=T+X1*S
2173  T1=T1+X2*S
2174  GOSUB 4000
2175  PRINT 
2180  P9=P9+1
2210  RETURN 
2300  S=SGN(T)
2305  IF T#0 THEN 2315
2310  S=SGN(T1)
2315  X1=ABS(T)
2320  X2=ABS(T1)
2330  RETURN 
3000  PRINT TAB(66)"TOTAL";
3002  GOSUB 2300
3004  GOSUB 4403
3005  PRINT ".";
3006  GOSUB 4450
3007  K=25-P9
3008  GOSUB 9900
3009  PRINT TAB(70);'16;P6
3010  K=3
3011  GOSUB 9900
3012  P9=29
3013  PRINT TAB(5);
3015  X=D5
3020  GOSUB 4310
3025  PRINT TAB(37);
3030  GOSUB 2300
3045  X$="*"
3050  GOSUB 4405
3055  PRINT TAB(54);
3060  GOSUB 4450
3065  PRINT TAB(69);
3070  X$="*"
3075  GOSUB 4405
3080  PRINT "  ";
3085  GOSUB 4450
3090  K=4
3095  GOSUB 9900
3100  P9=33
3105  GOSUB 5000
3107  I1=1
3110  GOSUB 5100
3115  GOTO F2 OF 3120,3140,3175
3120  PRINT TAB(15);Z$
3125  P9=P9+1
3130  I1=I+1
3135  GOTO 3110
3140  PRINT TAB(15);Z$;
3145  IF D2#0 THEN 3160
3150  PRINT 
3155  GOTO 3125
3160  GOSUB 5200
3165  PRINT ", ";Z$;"   ";D2
3170  GOTO 3125
3175  IF Z$="" THEN 3190
3180  PRINT TAB(15)"ATTN: ";Z$
3185  P9=P9+1
3190  RETURN 
4000  REM
4005  IF T1>-100 THEN 4020
4010  T=T-1
4015  T1=T1+100
4020  IF T1>99 THEN 4045
4025  IF SGN(T)*SGN(T1) >= 0 THEN 4040
4030  T=T-SGN(T)
4035  T1=T1-100*SGN(T1)
4040  RETURN 
4045  T=T+INT((T1*.01))
4050  T1=(T1*.01-INT(T1*.01))*100
4055  IF T1-INT(T1)<.9 THEN 4065
4060  T1=INT(T1)+1
4065  RETURN 
4100  REM
4105  J=1
4107  FOR I=4 TO 18 STEP 5
4110  S[J,1]=P[I]
4115  S[J,2]=INT(P[I+1]/100)
4120  S[J+1,1]=P[I+1]-S[J,2]*100
4125  X=INT(P[I+2]/100)
4130  S[J+1,1]=S[J+1,1]*10^4+X
4135  S[J+1,2]=(P[I+2]-X*100)*100
4140  X=INT(P[I+3]/10^4)
4145  S[J+1,2]=S[J+1,2]+X
4150  S[J+2,1]=(P[I+3]-X*10^4)*100
4155  X=INT(P[I+4]/10^4)
4160  S[J+2,1]=S[J+2,1]+X
4165  S[J+2,2]=P[I+4]-X*10^4
4170  J=J+3
4175  NEXT I
4180  RETURN 
4300  Z$="##/##/##"
4305  GOTO 4315
4310  Z$="## ## ##"
4315  X$="O"
4320  GOSUB 4800
4325  Z[1]=X1
4330  Z[2]=X2
4335  Z[3]=X3
4340  GOSUB 9000
4350  RETURN 
4400  GOSUB 4500
4403  X$=" "
4405  Z$=" #######"
4407  IF S>-1 THEN 4410
4408  Z$[1,1]="<"
4410  Z[1]=X1
4420  GOSUB 9000
4430  RETURN 
4450  Z$="## "
4455  X$="O"
4457  IF S>-1 THEN 4460
4458  Z$[3,3]=">"
4460  Z[1]=X2
4470  GOSUB 9000
4480  RETURN 
4500  X1=INT(X/100)
4505  I=X-X1*100
4510  X2=INT(I)
4515  IF I-X2<.8 THEN 4525
4520  X2=X2+1
4525  IF X2<100 THEN 4540
4530  X1=X1+1
4535  X2=X2-100
4540  RETURN 
4700  K=42-P9+1
4702  GOSUB 9900
4705  PRINT TAB(50);P6;TAB(70)'16;"   ";U6
4710  K=2
4715  GOSUB 9900
4720  P9=4
4730  RETURN 
4800  X1=INT(X/10^4)
4805  X2=INT((X-X1*10^4)/100)
4810  X3=X-X1*10^4-X2*100
4830  RETURN 
5000  REM
5002  X=U6
5004  FOR N=1 TO C8
5006  IF X<401 THEN 5016
5008  X=X-400
5010  NEXT N
5012  T$=""
5014  RETURN 
5016  R=INT(X/2)
5018  R1=2
5020  IF R*2=X THEN 5026
5022  R=R+1
5024  R1=1
5026  READ #(N+1),R;M$,D[1],T$,D[2]
5028  IF D[R1]#-1 THEN 5034
5030  T$=""
5032  RETURN 
5034  IF R1=2 THEN 5038
5036  T$=M$
5038  D0=SGN(D[R1])
5039  D1=INT(ABS(D[R1])/10^5)
5040  D2=ABS(D[R1])-D1*10^5
5042  RETURN 
5100  J=1
5105  Z$=""
5110  FOR I=I1 TO LEN(T$)
5115  F2=1
5120  IF T$[I,I]='17 THEN 5175
5125  F2=2
5130  IF T$[I,I]='18 THEN 5175
5135  Z$[J,J]=T$[I,I]
5140  J=J+1
5145  IF T$[I,I]="," THEN 5155
5150  IF T$[I,I]#"." THEN 5165
5155  Z$[J,J]=" "
5160  J=J+1
5165  NEXT I
5170  F2=3
5175  RETURN 
5200  X=INT(D2/100)
5205  RESTORE 150
5210  FOR J1=1 TO 52
5215  READ X1
5220  IF X<X1 THEN 5230
5225  NEXT J1
5230  RESTORE 145
5235  FOR J=1 TO J1
5240  READ Z$
5245  NEXT J
5250  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[72],Y$[10],Z$[72]
9060  Y$="O123456789"
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]="O"
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
9905  PRINT 
9910  NEXT I
9912  FOR I=1 TO 50
9913  PRINT '21;
9914  NEXT I
9920  RETURN 
9999  END 
