1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APCKRG:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 9 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  PRINT "USE INPUT FILE: PI1, PI2";
11  DIM A$[6]
12  INPUT I$
13  P=X1=X2=0
14  IF I$="PI1" THEN 18
15  IF I$="PI2" THEN 18
16  PRINT '7'7"WHAT";
17  GOTO 12
18  PRINT "(1) TOP OF FORM OR (2) ABDICK";
19  MAT T=ZER
20  INPUT P5
21  PRINT "CURRENT DATE";
22  INPUT X
23  P9=66
24  GOTO 90
50  READ #3;I$,P5,X,P9
90  H$='29'31'13'26'30
95  DIM M$[58],T$[58],Y$[10],H$[5],X$[1],I$[10],Z$[20]
97  DIM P[29],S[9,2],T[3,3]
100  FILES PI1,PN1,S0
105  C8=3
110  Y$="0123456789"
122  ASSIGN I$,1,W5
140  GOSUB 4800
164  D1=X1
166  D2=X2
168  D3=X3
300  F0=0
310  F1=1
320  GOSUB 8000
1000  FOR I1=1 TO 200
1005  READ #1,I1;I$
1010  IF I$="" THEN 1500
1015  MAT  READ #1;P
1020  IF F1=2 OR P[28] <= 0 THEN 1045
1021  T[2,3]=T[2,3]+1
1022  I=1
1023  GOSUB 2303
1024  GOSUB 6100
1025  PRINT 
1027  I=2
1028  GOSUB 2300
1029  GOSUB 6100
1030  P9=P9+3
1035  F1=2
1040  GOSUB 8000
1042  GOTO 1097
1045  IF I1#1 THEN 1055
1050  C0=P[28]
1052  GOTO 1097
1055  IF P[28]=C0 THEN 1130
1060  T[2,3]=T[2,3]+1
1065  I=1
1070  GOSUB 2303
1075  GOSUB 6100
1080  K=2
1085  GOSUB 9900
1090  P9=P9+3
1095  GOSUB 6010
1097  C0=P[28]
1100  Z$="#####"
1105  X$=" "
1110  Z[1]=P[28]
1115  GOSUB 9000
1120  U6=P[1]
1125  GOSUB 4000
1130  REM
1200  PRINT TAB(45);I$;TAB(56);
1205  Z$="##/##/## "
1210  X$=" "
1215  X=P[2]
1220  GOSUB 4800
1225  Z[1]=X1
1230  Z[2]=X2
1235  Z[3]=X3
1240  GOSUB 9000
1245  X=P[3]*100
1250  PRINT TAB(65);
1255  GOSUB 3000
1260  I=1
1265  GOSUB 1600
1270  GOSUB 3600
1275  FOR J0=1 TO 9
1280  IF J0=1 THEN 1295
1285  IF S[J0,1]=0 AND S[J0,2]=0 AND P[J0+18]=0 THEN 1370
1290  PRINT TAB(71)"      ";
1295  X$=" "
1300  IF S[J0,1]#0 THEN 1315
1305  PRINT "        ";
1310  GOTO 1335
1315  Z$="  ######"
1320  Z[1]=S[J0,1]
1325  GOSUB 9000
1330  X$="0"
1335  Z$="#### "
1340  Z[1]=S[J0,2]
1345  GOSUB 9000
1350  X=P[J0+18]*100
1355  GOSUB 3000
1360  GOSUB 6100
1365  GOSUB 6000
1370  NEXT J0
1500  NEXT I1
1505  T[2,3]=T[2,3]+1
1506  I=1
1507  GOSUB 2303
1508  GOSUB 6100
1509  PRINT 
1510  I=2
1512  GOSUB 2300
1515  K=2
1520  GOSUB 9900
1525  I=3
1530  GOSUB 2300
1540  END 
1600  X8=T[I,1]+X1
1605  X9=T[I,2]+X2
1610  GOSUB 1620
1612  T[I,1]=X8
1615  T[I,2]=X9
1617  RETURN 
1620  REM
1625  IF X9>-100 THEN 1640
1630  X8=X8-1
1635  X9=X9+100
1640  IF X9>99 THEN 1665
1645  IF SGN(X8)*SGN(X9) >= 0 THEN 1660
1650  X8=X8-SGN(X8)
1655  X9=X9-100*SGN(X9)
1660  RETURN 
1665  X8=X8+INT((X9*.01))
1670  X9=(X9*.01-INT(X9*.01))*100
1675  IF X9-INT(X9)<.9 THEN 1685
1680  X9=INT(X9)+1
1685  RETURN 
2300  PRINT "GRAND TOTAL = ";
2302  GOTO 2305
2303  PRINT TAB(8)"CHECK AMOUNT";TAB(65);'16;TAB(36);
2305  X1=T[I,1]
2310  X2=T[I,2]
2315  GOSUB 3010
2320  IF I=1 THEN 2345
2322  PRINT 
2325  PRINT "NUMBER OF CKS ISSUED = ";
2330  Z$="####"
2332  X$=" "
2335  Z[1]=T[I,3]
2340  GOSUB 9000
2342  P9=P9+1
2345  REM
2347  IF I=3 THEN 2395
2350  I=I+1
2355  GOSUB 1600
2375  T[I,3]=T[I,3]+T[I-1,3]
2380  T[I-1,1]=T[I-1,2]=T[I-1,3]=0
2395  RETURN 
3000  X1=INT(ABS(X)/100)*SGN(X)
3005  X2=(ABS(X)-INT(ABS(X)/100)*100)*SGN(X)
3010  Z$=" $######."
3015  IF X1 >= 0 AND X2 >= 0 THEN 3020
3017  Z$[1,1]="<"
3020  X$=" "
3030  Z[1]=X1
3040  GOSUB 9000
3045  Z$="## "
3047  IF X1 >= 0 AND X2 >= 0 THEN 3050
3048  Z$[3,3]=">"
3050  X$="0"
3060  Z[1]=X2
3070  GOSUB 9000
3080  RETURN 
3600  REM
3602  J=1
3604  FOR I=4 TO 18 STEP 5
3606  S[J,1]=P[I]
3608  S[J,2]=INT(P[I+1]/100)
3610  S[J+1,1]=P[I+1]-S[J,2]*100
3612  X=INT(P[I+2]/100)
3614  S[J+1,1]=S[J+1,1]*10^4+X
3616  S[J+1,2]=(P[I+2]-X*100)*100
3618  X=INT(P[I+3]/10^4)
3620  S[J+1,2]=S[J+1,2]+X
3622  S[J+2,1]=(P[I+3]-X*10^4)*100
3624  X=INT(P[I+4]/10^4)
3626  S[J+2,1]=S[J+2,1]+X
3628  S[J+2,2]=P[I+4]-X*10^4
3630  J=J+3
3632  NEXT I
3634  RETURN 
4000  Z$="####/"
4010  X$=" "
4015  Z[1]=U6
4020  PRINT TAB(8);
4025  GOSUB 9000
4030  DATA "PN1PN2PN3"
4035  RESTORE 4030
4040  READ Z$
4500  REM
4505  X=U6
4510  FOR N0=1 TO C8
4515  IF X<401 THEN 4550
4520  X=X-400
4525  NEXT N0
4530  T$=""
4535  GOTO 4670
4550  M=INT(X/2)
4555  M1=2
4560  IF M*2=X THEN 4575
4565  M=M+1
4567  M1=1
4575  X=3*N0-2
4577  ASSIGN Z$[X,X+2],2,W5
4578  READ #2,M;T$,D[1],M$,D[2]
4580  IF D[M1]#-1 THEN 4600
4585  T$=""
4590  GOTO 4670
4600  IF M1=2 THEN 4615
4610  M$=T$
4615  T$=""
4617  J=1
4620  FOR I=1 TO LEN(M$)
4625  IF M$[I,I]='17 THEN 4670
4630  T$[J,J]=M$[I,I]
4635  J=J+1
4640  IF M$[I,I]="," THEN 4650
4645  IF M$[I,I]#"." THEN 4660
4650  T$[J,J]=" "
4655  J=J+1
4660  NEXT I
4670  PRINT T$[1,30];
4680  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 
6000  P9=P9+1
6010  IF P9<60 THEN 6030
6020  GOSUB 8000
6030  RETURN 
6100  PRINT 
6110  FOR H=1 TO 50
6120  PRINT '18;
6130  NEXT H
6140  RETURN 
8000  GOTO P5 OF 8010,8020
8010  PRINT '12'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18;
8015  GOTO 8030
8020  K=66-P9
8025  GOSUB 9910
8030  K=4
8035  GOSUB 9910
8040  Z$="##/##/##"
8042  X$=" "
8045  Z[1]=D1
8046  Z[2]=D2
8047  Z[3]=D3
8050  PRINT "DATE: ";
8055  GOSUB 9000
8070  PRINT TAB(40)"A C C O U N T S  P A Y A B L E";'1'16;TAB(22)"PAGE: ";
8075  Z$="###"
8080  P=P+1
8085  Z[1]=P
8090  GOSUB 9000
8095  PRINT 
8100  PRINT TAB(45)"CHECK REGISTER ";
8105  A$="(AUTO)"
8110  IF F1=1 THEN 8120
8115  A$="(HAND)"
8120  PRINT A$
8125  K=2
8130  GOSUB 9900
8135  PRINT "CHECK#  VENDOR#/NAME";TAB(45)"INVOICE#   INV DATE  ";
8140  PRINT "INV AMOUNT   ACCOUNT NO  ACC AMOUNT"
8145  K=2
8150  GOSUB 9900
8155  P9=11
8160  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[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  REM
9910  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9999  END 
