1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APIPRT:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 8 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  H$=""
9  DIM M$[58]
10  DIM T$[62],A$[20],Y$[10],H$[5],X$[1],I$[10],B$[20],Z$[20]
11  DIM P[29],S[9,2]
12  B2=0
100  FILES PI1,PN1,PN2,PN3
110  C9=1
115  C8=3
120  Y$="0123456789"
130  PRINT "USE INPUT FILE:  PI1 OR PI2";
135  INPUT A$
140  IF A$="PI1" THEN 160
145  IF A$="PI2" THEN 160
150  GOSUB 4250
155  GOTO 130
160  ASSIGN A$,1,W5
2000  PRINT "(1) TOP OF FORM OR (2) ABDICK";
2005  INPUT P5
2010  PRINT "CURRENT DATE";
2020  GOSUB 6800
2025  IF B1 THEN 2010
2030  D0=X
2035  PRINT "FIRST PAGE";
2040  INPUT P
2045  P=P-1
2050  PRINT "FIRST INV#";
2055  INPUT A$
2056  IF A$#"ALL" THEN 2060
2057  I=J=1
2058  GOTO 2080
2060  GOSUB 4000
2065  IF  NOT B1 THEN 2080
2070  PRINT '7"BEG.INV NOT ON FILE";H$[3,5];
2075  GOTO 2050
2080  N=I
2085  R=J
2090  P9=66
2095  GOSUB 8000
2100  FOR N=N TO C9
2105  FOR R0=R TO 200
2110  READ #N,R0;I$
2115  IF I$="" THEN 2305
2120  GOSUB 4100
2125  PRINT TAB(22);I$;TAB(34);
2130  Z$="####/"
2135  X$=" "
2140  Z[1]=U6=P[1]
2145  GOSUB 9000
2150  GOSUB 4500
2155  PRINT T$;TAB(63);
2160  X=P[2]
2165  GOSUB 6900
2170  X=P[3]*100
2175  GOSUB 7000
2185  Z$=" #####H "
2187  IF P[28]>0 THEN 2190
2188  Z$[7,7]="A"
2190  X$=" "
2195  Z[1]=P[28]
2200  GOSUB 9000
2205  FOR L=1 TO 9
2210  IF S[L,1]=0 AND S[L,2]=0 AND P[L+18]=0 THEN 2275
2212  IF L=1 THEN 2220
2215  PRINT TAB(71)'16;TAB(19);
2220  I=L
2225  GOSUB 7100
2230  PRINT " ";
2235  X=P[I+18]*100
2240  GOSUB 7000
2245  GOSUB 6000
2250  GOSUB 2400
2275  NEXT L
2280  K=1
2285  GOSUB 9910
2290  GOSUB 2400
2305  NEXT R0
2310  NEXT N
2320  END 
2400  P9=P9+1
2410  IF P9<60 THEN 2430
2420  GOSUB 8000
2430  RETURN 
4000  B1=0
4005  FOR I=1 TO C9
4010  FOR J=1 TO 200
4015  READ #I,J;Z$
4020  IF Z$#A$ THEN 4025
4022  IF  NOT B2 THEN 4050
4023  B2=0
4025  NEXT J
4030  NEXT I
4040  B1=1
4050  RETURN 
4100  MAT  READ #N;P
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 
4250  PRINT '7'7"INVALID DATA";H$[3,5];
4260  B1=1
4270  RETURN 
4500  B1=0
4505  X=U6
4510  FOR N0=1 TO C8
4515  IF X<401 THEN 4550
4520  X=X-400
4525  NEXT N0
4530  PRINT '7'7"ERR1"
4535  STOP 
4550  M=INT(X/2)
4555  M1=2
4560  IF M*2=X THEN 4575
4565  M=M+1
4567  M1=1
4575  READ #(N0+C9),M;T$,D[1],M$,D[2]
4580  IF D[M1]#-1 THEN 4600
4585  B1=1
4590  RETURN 
4600  IF M1=1 THEN 4620
4610  T$=M$
4620  FOR I=1 TO LEN(T$)
4625  IF T$[I,I]='17 THEN 4640
4630  NEXT I
4640  T$=T$[1,I-1]
4650  RETURN 
6000  REM
6020  PRINT 
6030  RETURN 
6800  B1=0
6805  INPUT X
6810  X1=INT(X/10^4)
6815  IF X1<1 OR X1>12 THEN 4250
6820  X2=INT((X-X1*10^4)/100)
6825  IF X2<1 OR X2>31 THEN 4250
6830  X3=X-X1*10^4-X2*100
6835  IF X3<71 OR X3>99 THEN 4250
6840  RETURN 
6900  GOSUB 6810
6910  Z$="##/##/## "
6920  X$=" "
6930  Z[1]=X1
6940  Z[2]=X2
6950  Z[3]=X3
6960  GOSUB 9000
6970  RETURN 
7000  Z$="$+#####."
7010  X$=" "
7015  X1=INT(ABS(X)/100)
7020  Z[1]=X1*SGN(X)
7030  GOSUB 9000
7040  Z$="##"
7050  X$="0"
7060  Z[1]=ABS(X)-X1*100
7070  GOSUB 9000
7080  RETURN 
7100  IF S[I,1]#0 THEN 7120
7105  PRINT "      ";
7110  X$=" "
7115  GOTO 7145
7120  Z$="######"
7125  X$=" "
7130  Z[1]=S[I,1]
7135  GOSUB 9000
7140  X$="0"
7145  Z$="####"
7150  Z[1]=S[I,2]
7155  GOSUB 9000
7160  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  X=D0
8045  PRINT TAB(22)"DATE: ";
8050  GOSUB 6900
8070  PRINT TAB(51)"A C C O U N T S  P A Y A B L E";'16;TAB(20)"PAGE: ";
8075  Z$="###"
8080  P=P+1
8085  Z[1]=P
8090  GOSUB 9000
8095  GOSUB 6000
8100  PRINT TAB(60)"INPUT FILE";
8115  K=2
8120  GOSUB 9900
8125  PRINT TAB(22)"INVOICE#    VENDOR#/NAME";TAB(66)"INV      INV AMT CHECK#";
8126  PRINT "      ACCT#     AMOUNT";
8130  GOSUB 6000
8135  PRINT TAB(65)"DATE";
8140  K=2
8145  GOSUB 9900
8150  P9=12
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  GOSUB 6000
9910  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9999  END 
