1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APCHGA:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 21 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  REM  H$=""
9  DIM B$[4],C$[4],D$[4]
10  DIM A$[20],X$[1],Z$[20],Y$[10],H$[5]
11  DIM Q[4,8],U[6],C[1200],T[5,2],W[5]
12  P=0
13  Q5=0
14  MAT W=ZER
20  Y$="0123456789"
100  FILES PC1,PC2
170  W1=T=0
180  MAT T=ZER
200  MAT C=ZER
210  DATA "DEC","NOV","OCT","SEPT","AUG","JULY","JUNE","MAY"
220  DATA " APR"," MAR"," FEB"," JAN"," DEC"," NOV"
400  PRINT H$[1,2];H$[2,2]"(1) TOP OF FORM (2) ABDICK";
405  INPUT P5
410  PRINT "CURRENT DATE";
415  INPUT X
420  G1=INT(X/10^4)
425  G2=INT((X-G1*10^4)/100)
430  G3=X-G1*10^4-G2*100
435  FOR I=1 TO 13-G1
437  READ B$
440  NEXT I
442  READ C$,D$
500  P9=66
510  GOSUB 8000
2000  REM
2100  FOR N0=1 TO 2
2105  FOR I1=1 TO 200
2110  MAT  READ #N0,I1;Q
2115  FOR I2=1 TO 4
2120  IF Q[I2,2]=0 THEN 2175
2130  C[Q[I2,2]]=C[Q[I2,2]]+1
2135  GOSUB 3000
2140  GOSUB 2500
2150  NEXT I2
2160  NEXT I1
2170  NEXT N0
2175  FOR I=1 TO 1200
2180  IF C[I]=0 THEN 2190
2185  T=T+1
2190  NEXT I
2195  F1=1
2200  A$="GRAND"
2205  GOSUB 3100
2210  END 
2500  REM
2530  GOSUB 3600
2540  Q[I2,3]=Q[I2,3]*100
2575  X=INT(ABS(Q[I2,3])/100)
2580  X1=ABS(Q[I2,3])-X*100
2582  X=X*SGN(Q[I2,3])
2583  X1=X1*SGN(Q[I2,3])
2585  I=1
2590  GOSUB 2700
2592  W1=W1+1
2595  I=G1-U0
2597  IF I >= 0 AND I<3 THEN 2625
2600  IF I<0 THEN 2607
2602  I=3
2605  GOTO 2625
2607  IF I#-10 THEN 2610
2608  I=2
2609  GOTO 2625
2610  IF I#-11 THEN 2602
2612  I=1
2625  I=I+2
2630  GOSUB 2700
2635  W[I]=W[I]+Q5
2637  W[1]=W[1]+Q5
2665  RETURN 
2700  X2=T[I,1]+X
2705  X3=T[I,2]+X1
2710  GOSUB 3500
2715  T[I,1]=X2
2720  T[I,2]=X3
2725  RETURN 
3000  J=1
3005  FOR I=4 TO 6 STEP 2
3010  U[J]=INT(Q[I2,I]/100)
3015  U[J+1]=Q[I2,I]-U[J]*100
3020  X=INT(Q[I2,I+1]/10^4)
3025  U[J+1]=U[J+1]*100+X
3030  U[J+2]=Q[I2,I+1]-X*10^4
3040  J=J+3
3045  NEXT I
3047  U0=INT(U[1]/100)
3050  RETURN 
3100  PRINT " ";A$;" TOT OF CK AMTS:";
3105  FOR J=F1 TO F1+4
3110  X=T[J,1]
3115  X1=T[J,2]
3120  IF J#2 AND J#7 THEN 3130
3125  PRINT TAB(55);A$;" TOT AGING AMTS:";
3130  PRINT " ";
3135  GOSUB 3400
3160  NEXT J
3165  GOSUB 6000
3170  PRINT TAB(6);A$;" INV COUNT:";
3175  Z$="         #####"
3180  X$=" "
3185  FOR J=F1 TO F1+4
3190  IF J#2 AND J#7 THEN 3200
3195  PRINT TAB(56);A$;" INVOICE COUNT:";
3200  REM
3205  Z[1]=W[J]
3210  GOSUB 9000
3220  NEXT J
3231  GOSUB 6000
3232  PRINT TAB(7);A$;" CK COUNT:";
3233  Z[1]=W1
3235  GOSUB 9000
3236  GOSUB 6000
3240  PRINT TAB(9)"VENDOR COUNT:";
3245  Z[1]=T
3250  GOSUB 9000
3260  PRINT 
3270  RETURN 
3400  REM
3405  Z$="$+########."
3410  X$=" "
3415  Z[1]=X
3420  GOSUB 9000
3425  Z$="##"
3430  X$="0"
3435  Z[1]=X1
3440  GOSUB 9000
3465  RETURN 
3500  REM
3505  IF X3>-100 THEN 3520
3510  X2=X2-1
3515  X3=X3+100
3520  IF X3>99 THEN 3545
3525  IF SGN(X2)*SGN(X3) >= 0 THEN 3540
3530  X2=X2-SGN(X2)
3535  X3=X3-100*SGN(X3)
3540  RETURN 
3545  X2=X2+INT((X3*.01))
3550  X3=(X3*.01-INT(X3*.01))*100
3555  IF X3-INT(X3)<.9 THEN 3565
3560  X3=INT(X3)+1
3565  RETURN 
3600  Q5=0
3602  FOR I=1 TO 6
3605  IF U[I]=0 THEN 3615
3610  Q5=Q5+1
3615  NEXT I
3620  RETURN 
6000  PRINT 
6005  FOR Z=1 TO 100
6010  PRINT '22;
6020  NEXT Z
6030  RETURN 
8000  GOTO P5 OF 8010,8020
8010  PRINT '12;
8015  GOTO 8030
8020  K=66-P9
8025  GOSUB 9910
8030  K=4
8035  GOSUB 9910
8040  Z$="DATE: ##/##/##"
8045  X$=" "
8050  Z[1]=G1
8055  Z[2]=G2
8060  Z[3]=G3
8065  GOSUB 9000
8070  PRINT TAB(50)"A C C O U N T S  P A Y A B L E";'16;TAB(43)"PAGE: ";
8075  Z$="###"
8085  Z[1]=P=P+1
8090  GOSUB 9000
8095  GOSUB 6000
8100  PRINT TAB(46)"AGING OF CHECKS HELD FILE - GRAND TOTALS";
8115  K=2
8120  GOSUB 9900
8130  PRINT TAB(70);'16;TAB(16);B$;TAB(30);C$;TAB(44);D$;"     ALL PRIOR";
8140  K=2
8150  GOSUB 9900
8160  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[20]
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  GOSUB 6000
9910  FOR I=1 TO K
9920  PRINT 
9940  NEXT I
9945  RETURN 
9999  END 
