1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         AGEPG : CTC ACCOUNTS RECEIVABLE 
4  REM
5  REM         36214 REV  B  PART 9 OF 13   2/73 
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
50  H$='26'11'25'24'31'30'29'28
60  DIM H$[8],L$[54],T$[54],X$[1],R$[10],I$[6]
70  DIM A[6],B[6],E[8],K[12],C[2],D[2,2],G[50]
80  E6=0
100  FILES G1,G2,G3,G4,G10A,G10B,G10C,G0,DT1
102  READ #8,1;A9,M9
105  PRINT "(1) TOP OF FORM OR (2) ABDICK";
107  INPUT P5
109  IF P5=1 OR P5=2 THEN 115
111  PRINT '7'7"WHAT";
113  GOTO 107
115  PRINT H$[7,7];H$[5,5];
117  PRINT "AGING OF (1) CTC (2) TA OR (3) ALL INVOICES";
119  INPUT H5
121  IF H5=1 OR H5=2 OR H5=3 THEN 127
123  PRINT '7'7'7'7"WHAT";
125  GOTO 119
127  X1=3*200*2
129  PRINT "CUST# INTERVAL OR GROUP (I/G)";
131  INPUT R$
133  IF R$[1,1]="I" THEN 139
135  GOSUB 4000
137  GOTO 161
139  PRINT "BEGINNING CUST#";
141  INPUT M6
143  IF INT(M6)=M6 AND M6>0 AND M6 <= X1 THEN 149
145  PRINT '7'7'7"INVALID CUST#"
147  GOTO 135
149  PRINT "ENDING CUST#";
151  INPUT M9
153  IF INT(M9)=M9 AND M9 >= M6 AND M9 <= X1 THEN 159
155  PRINT '7'7'7"INVALID CUST#"
157  GOTO 149
159  P7=1
161  PRINT "DATE (YYMMDD)";
163  INPUT V1
165  C4=INT(V1/10^4)
167  IF C4>71 AND C4<80 THEN 173
169  PRINT '7'7"ILLEGAL DATE"
171  GOTO 161
173  C2=INT((V1-C4*10^4)/100)
175  IF C2<1 OR C2>12 THEN 169
177  C3=V1-C4*10^4-C2*100
179  IF C3<1 OR C3>31 THEN 169
200  REM
203  MAT  READ K
205  DATA 31,28,31,30,31,30,31,31,30,31,30,31
210  MAT A=ZER
215  MAT B=ZER
220  READ C9,C8,E9,E8
225  DATA 2,3,8,4
230  C[1]=5
235  C[2]=0
240  MAT  READ E
245  DATA 1,2,3,5,6,7,8,0
255  P9=66
300  FOR L9=M6 TO M9
302  IF E6 THEN 340
305  GOSUB 2400
340  MAT A=ZER
345  MAT B=ZER
355  K9=L9
360  IF P7=1 THEN 372
365  K9=G[L9]
372  GOSUB 4550
373  E6=1
374  IF B3 OR D[R1,2]=0 THEN 1155
380  R0=D[R1,1]
400  F9=0
401  L1=D[R1,2]
403  IF L1=0 THEN 1045
405  K9=L1
410  GOSUB 5205
420  S1=INT(ABS(N[R1])/10)
430  D4=ABS(N[R1])-S1*10
435  D5=INT(O[R1]/10^5)
440  D4=D4*10+D5
441  IF SGN(N[R1])#-1 THEN 443
442  D4=-D4
443  L1=O[R1]-D5*10^5
445  K2=SGN(L[R1])
446  GOTO H5 OF 447,450,452
447  IF K2#-1 THEN 452
448  GOTO 403
450  IF K2#-1 THEN 403
452  IF F9 THEN 460
455  GOSUB 6200
457  F9=1
458  E6=0
460  S4=INT(S1/10^4)
465  S2=INT((S1-S4*10^4)/100)
470  S3=S1-S4*10^4-S2*100
475  S4=7*10+S4
610  D=D1=D2=0
620  IF C4#S4 THEN 670
630  IF C2#S2 THEN 700
640  IF C3<S3 THEN 773
650  D=D+C3-S3
660  GOTO 1600
670  IF C4<S4 THEN 770
680  D=(C4-S4)*365
690  GOTO 630
700  FOR J=1 TO C2
710  D1=D1+K[J]
720  NEXT J
730  FOR J=1 TO S2
740  D2=D2+K[J]
745  NEXT J
750  D=D+D1+C3-D2-S3
755  GOTO 1600
760  PRINT TAB(13);
761  IF K2#-1 THEN 764
762  PRINT "*";
763  GOTO 765
764  PRINT " ";
765  PRINT ABS(L[R1]);
767  GOTO 800
770  PRINT "ILLEGAL INV DATE"
771  PRINT L9,N,R,R1,C2,C3,C4,S2,S3,S4
772  GOTO 680
773  IF C4#S4 THEN 650
775  PRINT "CURRENT DATE PRECEDES INV DATE";
776  GOSUB 6000
777  P9=P9+1
778  GOSUB 6050
779  GOTO 650
800  X=23
805  FOR I=1 TO 4
810  IF D <= I*30 THEN 840
815  NEXT I
840  PRINT TAB(X+(I-1)*12)"$";
845  GOSUB 2550
850  GOSUB 2700
860  GOTO 403
1045  IF F9 THEN 1050
1046  GOTO H5 OF 1047,1155,1047
1047  REM
1048  GOSUB 6200
1050  REM
1052  FOR I=1 TO 5
1053  A[6]=A[6]+A[I]
1054  B[6]=B[6]+B[I]
1055  NEXT I
1056  GOSUB 2705
1058  I=6
1059  GOSUB 2025
1060  X2=23
1061  FOR I=1 TO 5
1062  GOSUB 2705
1064  PRINT TAB(X2+(I-1)*12);
1065  GOSUB 2025
1090  NEXT I
1100  K=1
1110  GOSUB 9900
1120  P9=P9+2
1130  GOSUB 6050
1152  K=82
1153  GOSUB 6100
1154  P9=P9+1
1155  NEXT L9
1160  IF I$="" THEN 9999
1170  CHAIN I$,H3
1600  Z[1]=S2
1605  Z[2]=S3
1610  Z[3]=S4
1615  Z$="##/##/##"
1620  X$=" "
1625  GOSUB 9000
1645  GOTO 760
2025  Z$="$ "
2026  IF A[I] >= 0 AND B[I] >= 0 THEN 2028
2027  Z$="$-"
2028  PRINT Z$;
2029  Z$="######."
2030  X$=" "
2032  Z[1]=A[I]
2035  GOSUB 9000
2050  Z$="##"
2055  X$="0"
2057  Z[1]=B[I]
2060  GOSUB 9000
2070  RETURN 
2400  GOTO P5 OF 2405,2415
2405  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;
2410  GOTO 2425
2415  K=66-P9
2420  GOSUB 9910
2425  K=4
2430  GOSUB 9910
2435  PRINT "AGED INVOICE AS OF ";
2440  Z[1]=C2
2442  Z[2]=C3
2444  Z[3]=C4
2446  Z$="##/##/##"
2448  X$=" "
2450  GOSUB 9000
2460  K=1
2465  GOSUB 9900
2490  PRINT TAB(39);"AMOUNT DUE";
2492  GOSUB 6000
2496  PRINT TAB(24);
2497  K=58
2498  GOSUB 6100
2500  PRINT "  TOTAL $     INVOICE    CURRENT        1-30       ";
2501  PRINT "31-60       61-90         OVER";
2502  GOSUB 6000
2503  PRINT "    DUE          #                                 ";
2506  PRINT "                           90";
2508  GOSUB 6000
2510  K=82
2511  GOSUB 6100
2515  K=1
2517  GOSUB 9910
2518  P9=12
2520  RETURN 
2550  Z[1]=M[R1]
2551  Z$=" "
2552  IF M[R1] >= 0 AND D4 >= 0 THEN 2554
2553  Z$="-"
2554  PRINT Z$;
2555  Z$="######."
2557  X$=" "
2560  GOSUB 9000
2570  Z[1]=D4
2575  Z$="##"
2580  X$="0"
2590  GOSUB 9000
2595  GOSUB 6000
2596  P9=P9+1
2597  GOSUB 6050
2600  RETURN 
2700  A[I]=A[I]+M[R1]
2702  B[I]=B[I]+D4
2705  IF B[I]>-100 THEN 2730
2710  A[I]=A[I]-1
2720  B[I]=B[I]+100
2730  IF B[I]>99 THEN 2760
2735  IF SGN(A[I])*SGN(B[I]) >= 0 THEN 2750
2740  A[I]=A[I]-SGN(A[I])
2745  B[I]=B[I]-100*SGN(B[I])
2750  RETURN 
2760  A[I]=A[I]+INT((B[I]*.01))
2765  B[I]=(B[I]*.01-INT(B[I]*.01))*100
2766  IF B[I]-INT(B[I])<(.9) THEN 2780
2770  B[I]=INT(B[I])+1
2780  GOTO 2750
4000  P7=2
4005  M6=1
4010  FOR I=1 TO 50
4015  PRINT "CUST#";
4020  INPUT X
4025  IF X=0 THEN 4055
4030  IF X>0 AND X <= M9 THEN 4045
4035  PRINT '7'7"INVALID CUST#"
4040  GOTO 4015
4045  G[I]=X
4050  NEXT I
4055  M9=I-1
4060  RETURN 
4550  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+E8),R;L$,D[1,1],D[1,2],T$,D[2,1],D[2,2]
4595  IF D[R1,2]#-1 THEN 4610
4600  B3=1
4605  RETURN 
4610  IF R1=2 THEN 4620
4615  T$=L$
4620  RETURN 
4800  J=1
4805  Z$=""
4810  FOR I=I1 TO LEN(T$)
4812  F2=1
4815  IF T$[I,I]='17 THEN 4860
4816  F2=2
4817  IF T$[I,I]='18 THEN 4860
4820  Z$[J,J]=T$[I,I]
4822  J=J+1
4825  IF T$[I,I]="," THEN 4835
4830  IF T$[I,I]#"." THEN 4845
4835  Z$[J,J]=" "
4840  J=J+1
4845  NEXT I
4850  F2=3
4860  RETURN 
4900  X=INT(R0/100)
4902  READ #(E8+C8+1),4
4905  FOR J1=1 TO 52
4907  READ #(E8+C8+1);X1
4910  IF X<X1 THEN 4930
4920  NEXT J1
4930  READ #(E8+C8+1),2
4940  FOR J=1 TO J1
4950  READ #(E8+C8+1);Z$
4960  NEXT J
4970  RETURN 
5000  X=K9/Q9
5010  I9=INT(X)
5020  D9=INT((X-I9)*10)
5030  R=I9
5035  IF D9=0 THEN 5045
5040  R=R+1
5045  FOR R1=1 TO Q9
5050  IF D9=F[R1] THEN 5080
5060  NEXT R1
5065  PRINT '7"ERR1"
5070  STOP 
5080  FOR N=1 TO Q8
5085  IF R<201 THEN 5120
5090  R=R-200
5095  NEXT N
5100  PRINT '7"ERR2"
5110  STOP 
5120  RETURN 
5205  Q9=E9
5210  Q8=E8
5211  FOR I=1 TO E9
5212  F[I]=E[I]
5213  NEXT I
5215  GOSUB 5000
5230  READ #N,R
5235  FOR I=1 TO E9
5240  READ #N;L[I],M[I],N[I],O[I]
5245  NEXT I
5250  RETURN 
6000  PRINT 
6020  FOR H=1 TO 30
6025  PRINT '5;
6030  NEXT H
6040  RETURN 
6050  IF P9<60 THEN 6060
6055  GOSUB 2400
6060  RETURN 
6100  FOR K1=1 TO K
6110  PRINT "-";
6120  NEXT K1
6125  GOSUB 6000
6130  RETURN 
6200  PRINT TAB(21);
6202  Z$="A####:"
6205  X$="0"
6207  Z[1]=L9
6208  IF P7=1 THEN 6210
6209  Z[1]=G[L9]
6210  GOSUB 9000
6215  I1=1
6220  GOSUB 4800
6225  GOTO F2 OF 6230,6240,6260
6230  PRINT TAB(29);Z$;
6232  GOSUB 6000
6234  P9=P9+1
6236  GOSUB 6050
6238  I1=I+1
6239  GOTO 6220
6240  PRINT TAB(29);Z$;
6242  IF R0=0 THEN 6232
6245  GOSUB 4900
6250  PRINT ", ";Z$;"   ";R0;
6255  GOTO 6232
6260  PRINT TAB(29)"ATTN: ";Z$;
6265  K=1
6267  GOSUB 9900
6270  P9=P9+2
6275  GOSUB 6050
6280  RETURN 
6500  READ #9,5;I$,H3,H5,R$,P7,M6,M9,C4,C2,C3
6510  MAT  READ #9;G
6520  P5=1
6530  GOTO 203
9000  REM
9002  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9004  DIM V$[72],Y$[10],Z$[72]
9006  Y$="0123456789"
9008  Z0=Z9-1
9010  Z0=Z0+1
9012  IF Z0=LEN(Z$)+1 THEN 9140
9014  IF Z$[Z0,Z0]="#" THEN 9030
9016  IF Z$[Z0,Z0+1]=".#" THEN 9030
9018  IF Z$[Z0,Z0+1]="+#" THEN 9026
9020  V$[V,V]=Z$[Z0,Z0]
9022  V=V+1
9024  GOTO 9010
9026  Z4=0
9028  GOTO 9010
9030  Z=100
9032  Z6=Z[Z2]
9034  Z9=Z0-1
9036  Z9=Z9+1
9038  IF Z$[Z9,Z9]="." THEN 9044
9040  IF Z$[Z9,Z9]="#" THEN 9036
9042  GOTO 9052
9044  IF Z5#1 THEN 9052
9046  Z5=0
9048  Z=Z9
9050  GOTO 9036
9052  IF Z#100 THEN 9056
9054  Z=Z9
9056  IF Z4=1 THEN 9070
9058  IF Z6 >= 0 THEN 9066
9060  V$[V,V]="-"
9062  V=V+1
9064  GOTO 9070
9066  V$[V,V]=" "
9068  V=V+1
9070  IF Z=Z9 THEN 9076
9072  Z6=ABS(Z6)+5*10^(Z-Z9)
9074  GOTO 9078
9076  Z6=ABS(Z6)+.5
9078  Z7=10^(Z-Z0-1)
9080  Z4=10*Z7
9082  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9084  IF Z1#0 THEN 9094
9086  V$[V,V]="."
9088  V=V+1
9090  Z3=0
9092  GOTO 9132
9094  Z8=INT(Z6/Z7)
9096  IF Z6<Z4 THEN 9104
9098  V$[V,V]="#"
9100  V=V+1
9102  GOTO 9130
9104  Z6=Z6-Z8*Z7
9106  IF Z8=0 THEN 9110
9108  Z3=0
9110  IF Z3=0 THEN 9126
9112  IF Z1#1 THEN 9120
9114  V$[V,V]="0"
9116  V=V+1
9118  GOTO 9130
9120  V$[V,V]=X$
9122  V=V+1
9124  GOTO 9130
9126  V$[V,V]=Y$[Z8+1,Z8+1]
9128  V=V+1
9130  Z7=Z7/10
9132  NEXT Z1
9134  Z3=Z4=Z5=Z7=1
9136  Z2=Z2+1
9138  GOTO 9008
9140  PRINT V$;
9142  V$=""
9144  RETURN 
9300  PRINT "CUSTOMER NUMBER NOT IN USE"
9310  STOP 
9900  GOSUB 6000
9910  FOR K1=1 TO K
9920  PRINT 
9930  NEXT K1
9940  RETURN 
9999  END 
