1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APINPT:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 7 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  REM  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
200  PRINT H$[1,2]"ENTER, MODIFY, PRINT INVOICES OR CLEAR INPUT FILE (E/M/P/C)";
210  INPUT A$
212  IF A$="END" THEN 9999
215  IF A$[1,1]="E" THEN 1000
220  IF A$[1,1]="M" THEN 1300
225  IF A$[1,1]="P" THEN 2000
230  IF A$[1,1]="C" THEN 300
235  GOSUB 4250
240  GOTO 200
300  PRINT '7'7"CLEAR INPUT FILE";
305  INPUT A$
310  IF A$[1,1]#"Y" THEN 200
315  I$=""
320  MAT P=ZER
325  FOR N=1 TO C9
330  FOR R=1 TO 200
335  GOSUB 4395
340  NEXT R
345  NEXT N
350  END 
1000  A$=""
1002  L4=1
1005  GOSUB 4000
1010  IF  NOT B1 THEN 1040
1030  PRINT '7'7"INPUT FILE FULL"
1035  STOP 
1040  N=I
1045  R=J
1050  PRINT H$[1,2];H$[2,2];
1051  MAT P=ZER
1052  GOSUB 6100
1053  IF B1 THEN 1057
1054  PRINT '7"INV ON FILE"
1055  GOTO 1050
1057  I$=A$
1058  GOSUB 6150
1059  IF B1 THEN 1050
1060  GOSUB 6200
1065  GOSUB 6250
1067  PRINT 
1068  T=0
1069  MAT S=ZER
1070  FOR J1=1 TO 9
1075  GOSUB 6300
1080  IF B1 THEN 1115
1085  S[J1,1]=X
1090  S[J1,2]=X1
1095  GOSUB 6400
1100  P[J1+18]=Z
1105  T=T+Z
1107  PRINT 
1110  NEXT J1
1115  J1=J1-1
1116  GOSUB 6500
1117  PRINT '7'7"SUM OF AC AMTS =";T;"INV AMT=";P[3]
1122  PRINT 
1125  PRINT "ENTER AS ABOVE";
1130  INPUT A$
1135  IF A$[1,1]#"Y" THEN 1000
1140  GOSUB 4300
1145  GOTO 1000
1300  PRINT H$[1,2];H$[2,2];
1301  L4=0
1302  GOSUB 6100
1305  IF  NOT B1 THEN 1320
1310  PRINT '7'7"INV NOT ON FILE";H$[3,5];
1315  GOTO 1300
1320  N=I
1322  R=J
1323  I$=A$
1324  GOSUB 4100
1325  PRINT H$[1,2]"( 1) INV#:";TAB(15);I$
1327  U6=P[1]
1328  GOSUB 4500
1330  PRINT "( 2) VENDOR#:";TAB(15);P[1];"/";T$
1335  PRINT "( 3) INV DT:";TAB(15);
1340  X=P[2]
1345  GOSUB 6900
1350  PRINT 
1355  PRINT "( 4) INV AMT:";TAB(15);
1360  X=P[3]*100
1365  GOSUB 7000
1370  PRINT 
1375  PRINT "( 5) CHECK#:";TAB(15);
1376  Z$="######A"
1377  X$=" "
1378  Z[1]=P[28]
1379  IF P[28] <= 0 THEN 1381
1380  Z$[7,7]="H"
1381  GOSUB 9000
1382  PRINT 
1383  PRINT 
1385  PRINT "ACCT DISTRIB"
1390  FOR I=1 TO 9
1395  Z$="(##) "
1400  X$=" "
1405  Z[1]=I+5
1410  GOSUB 9000
1415  GOSUB 7100
1420  PRINT ", ";
1425  X=P[I+18]*100
1430  GOSUB 7000
1435  PRINT 
1440  NEXT I
1445  PRINT 
1447  PRINT "(15) DELETE"
1448  PRINT 
1450  PRINT "MOD#";H$[2,2];
1455  INPUT A$
1460  IF A$="END" THEN 1300
1465  GOSUB 4200
1470  IF B1 THEN 1450
1475  IF Z>0 AND Z<16 THEN 1490
1480  GOSUB 4250
1485  GOTO 1450
1490  T0=Z
1492  IF T0#1 THEN 1540
1500  GOSUB 6100
1505  IF B1 THEN 1525
1510  PRINT '7"NEW INV ALREADY ON FILE";H$[3,5];
1515  PRINT H$[4,4];
1520  GOTO 1450
1525  I$=A$
1530  GOSUB 4300
1535  PRINT H$[4,4];
1537  GOTO 1515
1540  IF T0>5 THEN 1552
1545  GOSUB T0-1 OF 6150,6200,6250,6500
1550  GOTO 1530
1552  IF T0#15 THEN 1560
1553  I$=""
1554  MAT P=ZER
1556  GOSUB 4395
1558  GOTO 1300
1560  PRINT "ACC# OR $AMT (#/$)";
1562  INPUT A$
1565  IF A$[1,1]#"#" THEN 1600
1570  GOSUB 6300
1575  IF B1 THEN 1300
1580  S[T0-5,1]=X
1585  S[T0-5,2]=X1
1590  PRINT H$[4,4];
1595  GOTO 1530
1600  GOSUB 6400
1605  P[T0+13]=Z
1610  GOTO 1590
2000  CHAIN "APIPRT"
2010  END 
4000  B1=0
4005  FOR I=1 TO C9
4010  FOR J=1 TO 200
4012  IF  END #I THEN 4030
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 
4200  B1=Z=0
4205  FOR I1=1 TO LEN(A$)
4210  FOR I2=1 TO 10
4215  IF A$[I1,I1]=Y$[I2,I2] THEN 4260
4220  NEXT I2
4250  PRINT '7'7"INVALID DATA";H$[3,5];
4255  B1=1
4257  RETURN 
4260  Z=Z*10+I2-1
4270  NEXT I1
4280  RETURN 
4300  J=4
4305  FOR I=1 TO 9 STEP 3
4310  P[J]=S[I,1]
4320  X=INT(S[I+1,1]/10^4)
4325  P[J+1]=S[I,2]*100+X
4330  P[J+2]=(S[I+1,1]-X*10^4)*100
4335  X=INT(S[I+1,2]/100)
4350  P[J+2]=P[J+2]+X
4355  P[J+3]=(S[I+1,2]-X*100)*10^4
4360  X=INT(S[I+2,1]/100)
4365  P[J+3]=P[J+3]+X
4370  P[J+4]=(S[I+2,1]-X*100)*10^4+S[I+2,2]
4380  J=J+5
4390  NEXT I
4395  PRINT #N,R;I$
4397  MAT  PRINT #N;P
4398  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  GOTO P5 OF 6010,6020
6010  PRINT '13;
6015  RETURN 
6020  PRINT 
6030  RETURN 
6100  PRINT "INV#";
6101  INPUT A$
6102  IF A$="END" THEN 9999
6103  B2=0
6104  IF A$[1,1]#"*" THEN 6107
6105  B2=1
6106  A$=A$[2]
6107  IF LEN(A$)<11 THEN 6112
6108  GOSUB 4250
6110  GOTO 6100
6112  B1=1
6113  IF L4 AND B2 THEN 6120
6115  GOSUB 4000
6120  RETURN 
6150  PRINT "VENDOR#";
6155  INPUT U6
6157  IF U6>0 AND U6 <= C8*400 THEN 6160
6158  GOSUB 4250
6159  GOTO 6150
6160  GOSUB 4500
6165  IF  NOT B1 THEN 6175
6168  PRINT '7'7"VENDOR# NOT IN USE";H$[3,3];
6170  RETURN 
6175  PRINT T$;
6177  INPUT A$
6180  IF A$[1,1]="Y" THEN 6190
6182  PRINT H$[4,4];H$[4,4];
6185  GOTO 6150
6190  PRINT H$[4,5];
6195  P[1]=U6
6197  RETURN 
6200  PRINT "INV DATE";
6205  GOSUB 6800
6210  IF B1 THEN 6200
6215  P[2]=X
6220  RETURN 
6250  PRINT "INV AMT";
6255  GOSUB 6700
6260  IF B1 THEN 6250
6265  P[3]=Z
6270  RETURN 
6300  B1=1
6302  PRINT "ACCT#";
6305  INPUT Z$
6307  IF Z$="END" THEN 6385
6308  B1=0
6309  L=LEN(Z$)
6310  IF L<11 THEN 6325
6315  GOSUB 4250
6320  GOTO 6300
6325  X=0
6330  IF L>4 THEN 6345
6335  A$=Z$
6340  GOTO 6370
6345  A$=Z$[1,L-4]
6350  GOSUB 4200
6355  IF B1 THEN 6300
6360  X=Z
6365  A$=Z$[L-3]
6370  GOSUB 4200
6375  IF B1 THEN 6300
6380  X1=Z
6385  RETURN 
6400  PRINT "ACCT AMT";
6405  GOSUB 6700
6410  IF B1 THEN 6400
6415  RETURN 
6500  PRINT "CHECK#";
6505  INPUT B$
6507  L=LEN(B$)
6510  IF L>1 THEN 6525
6515  GOSUB 4250
6520  GOTO 6500
6525  X=1
6530  IF B$[L,L]="H" THEN 6545
6535  X=-1
6540  IF B$[L,L]#"A" THEN 6515
6545  A$=B$[1,L-1]
6550  GOSUB 4200
6555  IF B1 THEN 6500
6560  P[28]=Z*X
6570  RETURN 
6700  B1=0
6702  INPUT B$
6704  S=1
6705  IF B$[1,1]#"-" THEN 6708
6706  S=-1
6707  B$=B$[2]
6708  L=LEN(B$)
6710  IF L<9 AND L>3 THEN 6725
6715  GOSUB 4250
6720  RETURN 
6725  IF B$[L-2,L-2]#"." THEN 6715
6730  A$=B$[1,L-3]
6735  GOSUB 4200
6740  IF B1 THEN 6720
6745  X=Z
6750  A$=B$[L-1]
6755  GOSUB 4200
6760  IF B1 THEN 6720
6770  Z=(X+Z*.01)*S
6780  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 
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 
9999  END 
