1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         CATLOG : CTC ACCOUNTS RECEIVABLE 
4  REM
5  REM         36214 REV  B  PART 4 OF 13  2/73 
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  DIM T$[54],L$[54],M$[54],I$[6],X$[1],R$[20]
100  FILES G10A,G10B,G10C,G15,G0,DT1
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
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
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 331
325  PRINT '7'7'7"WHAT";
330  GOTO 301
331  PRINT "FIRST CUST# (ENTER 0 TO PRINT ALL CUSTOMERS)";
332  INPUT M8
333  PRINT "FIRST PAGE";
334  INPUT P
336  P=P-1
400  READ C8,C9
405  DATA 3,2
410  C[1]=5
415  C[2]=0
420  READ #(C8+2),1;A9,M9
425  P1=66
430  GOSUB 2900
435  IF R0=2 THEN 2000
1000  REM
1010  FOR I5=M8 TO M9
1020  K9=I5
1030  GOSUB 4550
1040  IF B3 THEN 1160
1060  PRINT TAB(27);
1061  Z$="A####"
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 D[R1,1]=0 THEN 1085
1105  GOSUB 4900
1115  GOTO 1085
1120  PRINT TAB(45)"ATTN: ";Z$;
1125  K=1
1130  GOSUB 9900
1140  P1=P1+2
1150  GOSUB 1310
1160  NEXT I5
1170  IF I$="" THEN 9999
1180  CHAIN I$,H3
1300  GOSUB 6000
1305  P1=P1+1
1310  IF P1<57 THEN 1330
1320  GOSUB 2900
1330  RETURN 
2000  REM
2005  H0=0
2010  READ #(C8+1);J9
2020  FOR I5=1 TO J9
2030  READ #(C8+1);K9
2031  IF H0 THEN 2040
2032  IF M8=0 THEN 2037
2035  IF K9#M8 THEN 2170
2037  H0=1
2040  GOSUB 4550
2060  IF B3 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$="A####"
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 D[R1,1]=0 THEN 2110
2130  GOSUB 4900
2140  GOTO 2110
2145  PRINT TAB(22)"ATTN: ";Z$;
2150  K=1
2155  GOSUB 9900
2160  P1=P1+2
2165  GOSUB 1310
2170  NEXT I5
2180  GOTO 1170
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(20)"A C C O U N T S  R E C E I V 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)"CUSTOMER *";R$;"* CATALOGUE";
3005  K=2
3010  GOSUB 9900
3015  Z$="CUSTOMER NAME        CUSTOMER NUMBER"
3020  IF R0=2 THEN 3030
3025  Z$="CUSTOMER NUMBER        CUSTOMER NAME"
3030  PRINT TAB(22);Z$;
3035  K=2
3040  GOSUB 9900
3045  P1=11
3050  RETURN 
4550  REM
4552  B3=0
4555  FOR I=1 TO C9
4565  F[I]=C[I]
4570  NEXT I
4575  Q9=C9
4580  Q8=C8
4585  GOSUB 5000
4590  READ #N,R;L$,D[1,1],D[1,2],M$,D[2,1],D[2,2]
4595  IF D[R1,2]#-1 THEN 4610
4600  B3=1
4605  RETURN 
4610  T$=L$
4615  IF R1=1 THEN 4630
4620  T$=M$
4630  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(D[R1,1]/100)
4902  READ #(C8+2),4
4905  FOR J1=1 TO 52
4907  READ #(C8+2);X1
4910  IF X<X1 THEN 4930
4920  NEXT J1
4930  READ #(C8+2),2
4940  FOR J=1 TO J1
4950  READ #(C8+2);Z$
4960  NEXT J
4970  PRINT ", ";Z$;
4975  Z$="   #####"
4980  X$=" "
4985  Z[1]=D[R1,1]
4990  GOSUB 9000
4995  RETURN 
5000  X=K9/Q9
5010  I9=INT(X)
5020  D9=INT((X-I9)*10)
5030  IF D9#0 THEN 5070
5040  R=I9
5050  R1=Q9
5060  GOTO 5120
5070  R=I9+1
5080  FOR I=1 TO (Q9-1)
5090  IF D9=F[I] THEN 5110
5100  NEXT I
5110  R1=I
5120  FOR I=1 TO Q8
5130  IF R <= 200*I THEN 5150
5140  NEXT I
5150  N=I
5160  R=R-(200*I-200)
5170  RETURN 
6000  PRINT 
6005  FOR I=1 TO 50
6007  PRINT '18;
6010  NEXT I
6030  RETURN 
6500  READ #6,7;I$,H3,D1,D2,D3,R$,R0,M8,P
6505  P5=1
6510  GOTO 400
9000  REM
9005  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9010  DIM V$[72],Y$[10],Z$[72]
9015  Y$="0123456789"
9020  Z0=Z9-1
9025  Z0=Z0+1
9030  IF Z0=LEN(Z$)+1 THEN 9350
9035  IF Z$[Z0,Z0]="#" THEN 9075
9040  IF Z$[Z0,Z0+1]=".#" THEN 9075
9045  IF Z$[Z0,Z0+1]="+#" THEN 9065
9050  V$[V,V]=Z$[Z0,Z0]
9055  V=V+1
9060  GOTO 9025
9065  Z4=0
9070  GOTO 9025
9075  Z=100
9080  Z6=Z[Z2]
9085  Z9=Z0-1
9090  Z9=Z9+1
9095  IF Z$[Z9,Z9]="." THEN 9110
9100  IF Z$[Z9,Z9]="#" THEN 9090
9105  GOTO 9130
9110  IF Z5#1 THEN 9130
9115  Z5=0
9120  Z=Z9
9125  GOTO 9090
9130  IF Z#100 THEN 9140
9135  Z=Z9
9140  IF Z4=1 THEN 9175
9145  IF Z6 >= 0 THEN 9165
9150  V$[V,V]="-"
9155  V=V+1
9160  GOTO 9175
9165  V$[V,V]=" "
9170  V=V+1
9175  IF Z=Z9 THEN 9190
9180  Z6=ABS(Z6)+5*10^(Z-Z9)
9185  GOTO 9195
9190  Z6=ABS(Z6)+.5
9195  Z7=10^(Z-Z0-1)
9200  Z4=10*Z7
9205  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9210  IF Z1#0 THEN 9235
9215  V$[V,V]="."
9220  V=V+1
9225  Z3=0
9230  GOTO 9330
9235  Z8=INT(Z6/Z7)
9240  IF Z6<Z4 THEN 9260
9245  V$[V,V]="#"
9250  V=V+1
9255  GOTO 9325
9260  Z6=Z6-Z8*Z7
9265  IF Z8=0 THEN 9275
9270  Z3=0
9275  IF Z3=0 THEN 9315
9280  IF Z1#1 THEN 9300
9285  V$[V,V]="0"
9290  V=V+1
9295  GOTO 9325
9300  V$[V,V]=X$
9305  V=V+1
9310  GOTO 9325
9315  V$[V,V]=Y$[Z8+1,Z8+1]
9320  V=V+1
9325  Z7=Z7/10
9330  NEXT Z1
9335  Z3=Z4=Z5=Z7=1
9340  Z2=Z2+1
9345  GOTO 9020
9350  PRINT V$;
9355  V$=""
9360  RETURN 
9900  GOSUB 6000
9910  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9999  END 
