1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APNCAT:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 4 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  DIM L$[58],M$[58]
11  DIM R$[12]
12  DIM T$[58]
100  FILES PN1,PN2,PN3,P0
130  C8=3
145  DATA "PR","MA","RI","NH","ME","VT","CT","NJ","NY","PA","DE"
146  DATA "DC","MD","VA","WV","NC","SC","GA","FL","AL","TN","MS"
147  DATA "KY","OH","IN","MI","IA","WI","MN","SD","ND","MT","IL"
148  DATA "MO","KS","NB","LA","AR","OK","TX","CO","WY","ID","UT"
149  DATA "AZ","NM","NV","CA","HI","PACIFIC ISLANDS","OR","WA","AK"
150  DATA 10,28,30,39,50,60,70,90,150,197,200,206,220,247,270,290
151  DATA 300,320,350,370,386,400,430,460,480,500,530,550,570,580
152  DATA 590,600,630,660,680,700,716,730,750,800,820,832,840,850
153  DATA 870,890,900,967,969,970,980,995
160  PRINT "(1) TOP OF FORM OR (2) ABDICK";
165  INPUT P5
170  IF P5=1 OR P5=2 THEN 200
175  PRINT '7'7'7'7'7'7"WHAT";
180  GOTO 165
200  REM
250  READ #(C8+1),1;M9
255  READ #(C8+1),2
260  P=0
270  PRINT "CURRENT DATE";
275  INPUT D
280  D1=INT(D/10^4)
281  IF D1>0 AND D1<13 THEN 285
282  PRINT '7'7"INVALID DATE"
283  GOTO 270
285  D2=INT((D-D1*10^4)/100)
286  IF D2<1 OR D2>31 THEN 282
287  D3=D-D1*10^4-D2*100
288  IF D3<72 OR D3>99 THEN 282
290  PRINT "VENDOR CATALOGUE OR UNUSED VENDOR# LIST (C/U)";
295  INPUT R$
296  IF R$[1,1]="U" THEN 3100
300  PRINT "CATALOGUE 'NUMBER-NAME' OR 'NAME-NUMBER'";
301  INPUT R$
305  R0=1
310  IF R$="NUMBER-NAME" THEN 331
315  R0=2
320  IF R$="NAME-NUMBER" THEN 340
325  PRINT '7'7'7"WHAT";
330  GOTO 301
331  PRINT "BEGINNING VENDOR#";
332  INPUT M8
333  PRINT "BEGINNING PAGE#";
334  INPUT P
335  P=P-1
340  P1=66
342  GOSUB 2900
345  IF R0=2 THEN 2000
1000  REM
1010  FOR I5=M8 TO M9
1020  K9=I5
1030  GOSUB 4500
1040  IF B1 THEN 1160
1060  PRINT TAB(27);
1061  Z$="####"
1062  X$="0"
1063  Z[1]=I5
1064  GOSUB 9000
1065  I1=1
1070  GOSUB 4800
1075  GOTO F2 OF 1080,1100,1120
1080  PRINT TAB(45);Z$;
1085  I1=I+1
1090  GOSUB 1300
1095  GOTO 1070
1100  PRINT TAB(45);Z$;
1102  IF L2=0 THEN 1085
1105  GOSUB 4900
1115  GOTO 1085
1120  X=45
1122  GOSUB 2200
1125  K=1
1130  GOSUB 9900
1132  K=70
1135  GOSUB 6100
1140  P1=P1+2
1150  GOSUB 1310
1160  NEXT I5
1170  END 
1300  GOSUB 6000
1305  P1=P1+1
1310  IF P1<57 THEN 1330
1320  GOSUB 2900
1330  RETURN 
2000  REM
2010  READ #(C8+1);J9
2020  FOR I5=1 TO J9
2030  READ #(C8+1);K9
2040  GOSUB 4500
2060  IF B1 THEN 2170
2061  I1=1
2065  GOSUB 4800
2070  GOTO F2 OF 2075,2125,2145
2075  PRINT TAB(22);Z$;
2080  IF I1#1 THEN 2110
2085  PRINT TAB(50);
2090  Z$="####"
2095  X$="0"
2100  Z[1]=K9
2105  GOSUB 9000
2110  I1=I+1
2115  GOSUB 1300
2120  GOTO 2065
2125  PRINT TAB(22);Z$;
2127  IF L2=0 THEN 2110
2130  GOSUB 4900
2140  GOTO 2110
2145  X=22
2147  GOSUB 2200
2150  K=1
2155  GOSUB 9900
2156  K=70
2157  GOSUB 6100
2160  P1=P1+2
2165  GOSUB 1310
2170  NEXT I5
2180  END 
2200  PRINT TAB(X)"ATTN: ";Z$;
2205  GOSUB 6000
2207  P1=P1+1
2210  Z$="SUPPLIER"
2215  IF L1=1 THEN 2235
2220  Z$="QUICK RELEASE"
2225  IF L1=2 THEN 2235
2230  Z$="EMPLOYEE"
2235  PRINT TAB(X)"TYPE: ";Z$;
2240  IF L0=1 THEN 2260
2245  GOSUB 6000
2250  PRINT TAB(X)"VENDOR HISTORY";
2252  P1=P1+1
2260  RETURN 
2900  GOTO P5 OF 2905,2915
2905  PRINT '12'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18;
2910  GOTO 2925
2915  K=66-P1
2920  GOSUB 9910
2925  K=4
2930  GOSUB 9910
2935  PRINT "DATE: ";
2940  Z$="##/##/##"
2945  X$=" "
2950  Z[1]=D1
2955  Z[2]=D2
2960  Z[3]=D3
2965  GOSUB 9000
2970  PRINT TAB(23)"A C C O U N T S  P A Y A B L E";TAB(71)"PAGE: ";
2975  P=P+1
2980  Z$="###"
2985  Z[1]=P
2990  GOSUB 9000
2995  GOSUB 6000
3000  PRINT TAB(22)"  VENDOR *";R$;"* CATALOGUE";
3005  K=2
3010  GOSUB 9900
3015  Z$="  VENDOR NAME          VENDOR NUMBER"
3020  IF R0=2 THEN 3030
3025  Z$="  VENDOR NUMBER          VENDOR NAME"
3030  PRINT TAB(22);Z$;
3035  K=2
3040  GOSUB 9900
3045  P1=11
3050  RETURN 
3100  K=4
3105  GOSUB 9910
3110  PRINT "UNUSED VENDOR NUMBERS -- ";D1;"/";D2;"/";D3
3112  FOR K9=1 TO M9
3115  GOSUB 4500
3120  IF  NOT B1 THEN 3150
3125  PRINT K9
3130  K=20
3135  GOSUB 6100
3150  NEXT K9
3160  END 
4500  B1=0
4505  X=K9
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  L0=SGN(D[R1])
4625  L1=INT(ABS(D[R1])/10^5)
4630  L2=ABS(D[R1])-L1*10^5
4640  RETURN 
4800  J=1
4805  Z$=""
4810  FOR I=I1 TO LEN(T$)
4812  F2=1
4815  IF T$[I,I]='17 THEN 4860
4817  F2=2
4818  IF T$[I,I]='18 THEN 4860
4820  Z$[J,J]=T$[I,I]
4825  J=J+1
4830  IF T$[I,I]="." THEN 4840
4835  IF T$[I,I]#"," THEN 4850
4840  Z$[J,J]=" "
4845  J=J+1
4850  NEXT I
4855  F2=3
4860  RETURN 
4900  X=INT(L2/100)
4902  RESTORE 150
4905  FOR J1=1 TO 52
4907  READ X1
4910  IF X<X1 THEN 4930
4920  NEXT J1
4930  RESTORE 145
4940  FOR J=1 TO J1
4950  READ Z$
4960  NEXT J
4970  PRINT ", ";Z$;
4975  Z$="   #####"
4980  X$=" "
4985  Z[1]=L2
4990  GOSUB 9000
4995  RETURN 
6000  PRINT 
6030  RETURN 
6100  FOR Z=1 TO K
6105  PRINT '21;
6110  NEXT Z
6120  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[72],Y$[10],Z$[72]
9060  Y$="0123456789"
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 
