1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        APNAME:   CTC ACCOUNTS PAYABLE
4  REM
5  REM        36638 REV  A   PART 2 OF 24   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  REM  H$=""
11  DIM H[32]
12  DIM H$[5],Y$[10],X$[1],L$[58],M$[58]
13  MAT D=ZER
14  DIM T$[58],Z$[58]
15  DIM U$[58]
20  Y$="0123456789"
100  FILES PN1,PN2,PN3,P0,PH1
120  C8=3
140  READ #(C8+1),1;M9
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
300  PRINT H$[1,2]"VENDOR#";
310  INPUT Z$
315  IF Z$="END" THEN 9999
320  GOSUB 4200
330  IF B1 THEN 300
340  IF Z>0 AND Z <= C8*400 THEN 365
350  GOSUB 4250
355  GOTO 300
365  U6=Z
375  GOSUB 4500
380  IF B1 THEN 1200
1000  F1=0
1010  GOSUB 4700
1015  I1=1
1020  GOSUB 4800
1030  GOSUB 3400
1032  PRINT 
1035  IF F2#3 THEN 1020
1070  PRINT "TYPE: ";
1075  GOSUB 2400
1080  PRINT 
1100  PRINT "CHECK HISTORY?";
1105  IF D0=1 THEN 1120
1110  PRINT "YES"
1115  GOTO 1130
1120  PRINT "NO"
1130  PRINT 
1180  GOSUB 2000
1185  GOTO 300
1200  PRINT "VENDOR# NOT IN USE"
1202  PRINT 
1203  D0=1
1204  D1=D2=0
1205  GOSUB 2000
1210  IF B2=1 THEN 300
1215  IF U6 <= M9 THEN 300
1220  M9=U6
1225  PRINT #(C8+1),1;M9
1230  GOTO 300
2000  B2=2
2010  F1=I0=1
2015  U$=""
2020  PRINT "LINE";I0;
2025  INPUT T$
2027  I0=I0+1
2028  IF T$="RT" THEN 2270
2030  IF T$="SAME" THEN 2145
2035  IF T$="END" THEN 2085
2050  GOSUB 4700
2055  U$[LEN(U$)+1]=T$
2060  U$[LEN(U$)+1]='17
2065  GOSUB 2300
2070  IF B1 THEN 2000
2080  GOTO 2020
2085  PRINT "CITY";
2090  INPUT T$
2095  GOSUB 4700
2100  U$[LEN(U$)+1]=T$
2105  U$[LEN(U$)+1]='18
2110  GOSUB 2300
2115  IF B1 THEN 2000
2117  I0=I0+1
2120  PRINT "ATTN";
2125  INPUT T$
2126  IF T$="NONE" THEN 2137
2127  GOSUB 4700
2130  U$[LEN(U$)+1]=T$
2135  GOSUB 2300
2136  IF B1 THEN 2000
2137  IF R1=2 THEN 2140
2138  L$=U$
2139  GOTO 2145
2140  M$=U$
2145  PRINT "ZIP";
2150  INPUT Z$
2152  IF Z$="SAME" THEN 2190
2155  GOSUB 4200
2160  IF B1 THEN 2145
2165  IF Z=0 OR (Z >= 600 AND Z<10^5) THEN 2185
2170  GOSUB 4250
2175  GOTO 2145
2185  D2=Z
2190  PRINT "TYPE: (1) SUP (2) QR (3) EMP";
2195  INPUT D1
2200  IF D1=1 OR D1=2 OR D1=3 THEN 2215
2205  GOSUB 4250
2210  GOTO 2190
2215  REM
2220  PRINT "CHECK HISTORY";
2222  INPUT Z$
2224  IF Z$#"YES" THEN 2235
2226  IF D0=-1 THEN 2245
2228  GOSUB 5000
2229  IF B1 THEN 2245
2230  D0=-1
2232  GOTO 2245
2235  IF Z$#"NO" THEN 2260
2240  IF D0=1 THEN 2245
2242  GOSUB 5100
2245  D[R1]=D0*(D1*10^5+D2)
2250  PRINT #N,R;L$,D[1],M$,D[2]
2255  RETURN 
2260  GOSUB 4250
2265  GOTO 2220
2270  B2=1
2275  RETURN 
2300  B1=0
2310  IF LEN(U$)<58 THEN 2360
2320  B1=1
2330  PRINT '7'7"ADDRESS =";LEN(U$);">58"
2335  FOR I=1 TO I0+1
2340  PRINT H$[4,4];
2345  NEXT I
2350  PRINT H$[2,2];
2360  RETURN 
2400  Z$="SUPPLIER"
2405  IF D1=1 THEN 2450
2410  Z$="QUICK RELEASE"
2415  IF D1=2 THEN 2450
2420  Z$="EMPLOYEE"
2450  PRINT Z$;
2460  RETURN 
3400  B1=0
3402  GOTO F2 OF 3405,3420,3445
3405  PRINT Z$;
3410  I1=I+1
3415  RETURN 
3420  PRINT Z$;
3425  IF D2=0 THEN 3410
3430  GOSUB 4900
3435  PRINT ", ";Z$;"   ";D2;
3440  GOTO 3410
3445  PRINT "ATTN: ";Z$;
3450  RETURN 
4200  B1=Z=0
4205  FOR I1=1 TO LEN(Z$)
4210  FOR I2=1 TO 10
4220  IF Z$[I1,I1]=Y$[I2,I2] THEN 4270
4230  NEXT I2
4250  B1=1
4260  PRINT '7'7'7'7"INVALID DATA";H$[3,5];
4265  RETURN 
4270  Z=Z*10+I2-1
4280  NEXT I1
4285  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  D0=SGN(D[R1])
4635  D1=INT(ABS(D[R1])/10^5)
4640  D2=ABS(D[R1])-D1*10^5
4650  RETURN 
4700  J=1
4702  Z$=""
4705  FOR I=1 TO LEN(T$)
4710  IF T$[I,I]="." THEN 4750
4715  IF T$[I,I]="," THEN 4750
4720  Z$[J,J]=T$[I,I]
4722  J=J+1
4725  NEXT I
4730  T$=Z$
4740  RETURN 
4750  IF F1 THEN 4775
4755  Z$[J,J]=T$[I,I]
4760  J=J+1
4765  Z$[J,J]=" "
4770  GOTO 4722
4775  Z$[J,J]=T$[I,I]
4780  I=I+1
4785  GOTO 4722
4800  J=1
4805  Z$=""
4810  FOR I=I1 TO LEN(T$)
4812  F2=1
4815  IF T$[I,I]='17 THEN 4830
4816  F2=2
4817  IF T$[I,I]='18 THEN 4830
4820  Z$[J,J]=T$[I,I]
4822  J=J+1
4825  NEXT I
4827  F2=3
4830  RETURN 
4900  X=INT(D2/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  RETURN 
5000  B1=0
5005  FOR I=1 TO 200
5010  MAT  READ #(C8+2),I;H
5020  IF H[1]=0 THEN 5065
5030  NEXT I
5050  PRINT '7'7"CHECK HISTORY FILE FULL"
5055  B1=1
5060  RETURN 
5065  H[1]=U6
5070  MAT  PRINT #(C8+2),I;H
5080  RETURN 
5100  REM
5110  FOR I=1 TO 200
5120  MAT  READ #(C8+2),I;H
5130  IF H[1]=U6 THEN 5170
5140  NEXT I
5150  PRINT "NO HISTORY - "'7'7"ERR"
5155  STOP 
5170  REM
5180  FOR J=I+1 TO 200
5185  MAT  READ #(C8+2),J;H
5190  MAT  PRINT #(C8+2),(J-1);H
5191  NEXT J
5192  D0=1
5195  RETURN 
9999  END 
