1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APCHIS:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 5 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  H$=""
11  DIM H[32],J[6,6]
12  DIM H$[5],Y$[10],X$[1],L$[58],M$[58]
13  DIM T$[58]
20  Y$="0123456789"
100  FILES PN1,PN2,PN3,PH1
120  C8=3
200  PRINT "(1) TOP OF FORM OR (2) ABDICK";
210  INPUT P5
220  PRINT "CURRENT DATE";
230  INPUT X
240  G1=INT(X/10^4)
250  G2=INT((X-G1*10^4)/100)
255  G3=X-G1*10^4-G2*100
260  PRINT "BEGINNING PAGE#";
265  INPUT P
270  P=P-1
275  PRINT "VENDOR# INTERVAL TO BE PRINTED (X,Y)";
280  INPUT U7,U8
285  IF U7>0 AND U7 <= C8*400 AND U8>0 AND U8 <= C8*400 AND U7 <= U8 THEN 300
290  PRINT '7'7"INVALID DATA";H$[3,5];
295  GOTO 275
300  P9=66
310  GOSUB 8000
1000  FOR U6=U7 TO U8
1010  GOSUB 4500
1020  IF B1 OR SGN(D[R1])>-1 THEN 1250
1025  FOR I=1 TO 200
1030  MAT  READ #(C8+1),I;H
1050  IF H[1]=U6 THEN 1070
1055  NEXT I
1060  PRINT '7'7"PROG ERR - NO HISTORY ON VENDOR";U6
1065  STOP 
1070  J=1
1075  FOR I=8 TO 31 STEP 4
1077  J1=1
1078  FOR I1=I TO I+3 STEP 2
1080  J[J,J1]=INT(H[I1]/100)
1085  J[J,J1+1]=H[I1]-J[J,J1]*100
1090  X=INT(H[I1+1]/10^4)
1095  J[J,J1+1]=J[J,J1+1]*100+X
1100  J[J,J1+2]=H[I1+1]-X*10^4
1105  J1=J1+3
1107  NEXT I1
1110  J=J+1
1112  NEXT I
1115  Z$="      ####/"
1120  X$=" "
1125  Z[1]=U6
1130  GOSUB 9000
1135  PRINT T$;
1142  F1=0
1145  FOR I1=1 TO 6
1150  Z[1]=INT(H[I1+1]/10)
1155  IF Z[1]=0 THEN 1220
1157  F1=1
1160  Z$="######R"
1165  IF H[I1+1]-Z[1]*10 THEN 1175
1170  Z$[7,7]="V"
1175  PRINT TAB(50);
1177  GOSUB 9000
1180  Z$="##/##"
1182  PRINT TAB(61);
1185  FOR I2=1 TO 6
1190  IF J[I1,I2]=0 THEN 1210
1192  IF I2=1 THEN 1200
1193  PRINT ", ";
1200  Z[1]=INT(J[I1,I2]/100)
1202  Z[2]=J[I1,I2]-Z[1]*100
1204  GOSUB 9000
1208  NEXT I2
1210  K=1
1212  GOSUB 9900
1213  P9=P9+2
1214  GOSUB 3020
1216  NEXT I1
1220  IF F1 THEN 1230
1225  GOSUB 3000
1230  K=2
1235  GOSUB 9910
1240  P9=P9+2
1245  GOSUB 3020
1250  NEXT U6
1260  END 
3000  GOSUB 6000
3010  P9=P9+1
3020  IF P9<60 THEN 3040
3030  GOSUB 8000
3040  RETURN 
4500  B1=0
4505  X=U6
4510  FOR N=1 TO C8
4515  IF X<401 THEN 4550
4520  X=X-400
4525  NEXT N
4530  PRINT '7'7"ERR1"
4535  STOP 
4550  R=INT(X/2)
4555  R1=2
4560  IF R*2=X THEN 4575
4565  R=R+1
4567  R1=1
4575  READ #N,R;L$,D[1],M$,D[2]
4580  IF D[R1]#-1 THEN 4600
4585  B1=1
4590  RETURN 
4600  T$=L$
4605  IF R1=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  PRINT 
6030  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$="##/##/##"
8045  X$=" "
8050  Z[1]=G1
8055  Z[2]=G2
8060  Z[3]=G3
8062  PRINT "DATE: ";
8065  GOSUB 9000
8070  PRINT TAB(27)"A C C O U N T S  P A Y A B L E";TAB(71)"PAGE: ";
8075  Z$="###"
8080  P=P+1
8085  Z[1]=P
8090  GOSUB 9000
8095  GOSUB 6000
8100  PRINT TAB(33)"CHECK HISTORY FILE";
8105  GOSUB 6000
8110  PRINT TAB(28)"(STATUS: V=VOID, R=RELEASED)";
8115  K=2
8120  GOSUB 9900
8125  PRINT TAB(6)"VENDOR#/NAME";TAB(46)"CHECK#/STATUS  INVOICE DATES";
8135  K=2
8140  GOSUB 9900
8150  P9=12
8160  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[72],Z$[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 
