1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         AGETOP : CTC ACCOUNTS RECEIVABLE 
4  REM
5  REM         36214 REV  B  PART 8 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]
70  DIM A[12],B[12],E[8],K[12],T[50,2],C[2],D[2,2]
75  C=0
76  M7=0
80  MAT  READ K
85  DATA 31,28,31,30,31,30,31,31,30,31,30,31
100  FILES G1,G2,G3,G4,G10A,G10B,G10C,G0
105  PRINT "(1) TOP OF FORM OR (2) ABDICK";
110  INPUT P5
115  IF P5=1 OR P5=2 THEN 135
117  PRINT '7'7"WHAT";
118  GOTO 110
135  PRINT H$[7,7];H$[5,5];
150  MAT A=ZER
152  MAT B=ZER
155  READ C9,C8,E9,E8
157  DATA 2,3,8,4
160  C[1]=5
161  C[2]=0
162  MAT  READ E
163  DATA 1,2,3,5,6,7,8,0
170  READ #(E8+C8+1),1;A9,M9
200  PRINT "DATE (YYMMDD)";
201  INPUT V1
215  C4=INT(V1/10^4)
216  IF C4>71 AND C4<80 THEN 220
217  PRINT '7'7'7'7"INVALID DATE"
218  GOTO 200
220  C2=INT((V1-10000*C4)/100)
225  IF C2>12 THEN 217
230  C3=V1-10000*C4-100*C2
231  IF C3>K[C2] THEN 217
232  GOSUB 7000
300  P9=66
310  GOSUB 2400
330  FOR L9=1 TO P6
340  FOR I=1 TO 6
345  A[I]=B[I]=0
350  NEXT I
370  K9=T[L9,1]
372  GOSUB 4550
374  IF B3 THEN 1155
380  R0=D[R1,1]
400  GOSUB 6200
402  L1=D[R1,2]
403  IF L1=0 THEN 1045
405  GOSUB 7500
458  GOSUB 460
459  GOTO 1600
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  RETURN 
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  RETURN 
760  PRINT TAB(13);
761  IF SGN(L[R1])#-1 THEN 764
762  PRINT "*";
763  GOTO 765
764  PRINT " ";
765  PRINT ABS(L[R1]);
767  GOTO 800
770  PRINT "BAD INV DATE"
771  PRINT L9,N,R,R1,C2,C3,C4,S2,S3,S4
772  GOTO 680
773  IF C4#S4 THEN 650
774  PRINT "CURR DT PRECEDES INV DT";
775  GOSUB 6000
776  P9=P9+1
777  GOSUB 6050
779  GOTO 650
800  X=23
805  FOR I=1 TO 4
810  IF C <= I*30 THEN 835
815  NEXT I
835  GOTO M7 OF 840,850
840  PRINT TAB(X+(I-1)*12);
845  GOSUB 2550
850  GOSUB 2700
860  GOTO 403
1045  REM
1048  FOR I=1 TO 5
1049  A[6]=A[6]+A[I]
1050  B[6]=B[6]+A[I]
1052  NEXT I
1055  GOSUB 2705
1057  I=6
1058  GOSUB 2025
1059  X2=23
1060  FOR I=1 TO 5
1061  GOSUB 2705
1062  PRINT TAB(X2+(I-1)*12);
1063  GOSUB 2025
1067  NEXT I
1100  K=1
1110  GOSUB 9900
1120  P9=P9+2
1130  GOSUB 6050
1141  FOR I=8 TO 12
1142  A[I]=A[I]+A[I-7]
1144  B[I]=B[I]+B[I-7]
1146  NEXT I
1147  A[7]=A[7]+A[6]
1148  B[7]=B[7]+B[6]
1149  FOR I=7 TO 12
1150  GOSUB 2705
1151  NEXT I
1155  NEXT L9
1160  GOTO 2900
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 "TOP";P6;"AGED INVOICES 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
2900  K=1
2905  GOSUB 9910
2910  P9=P9+1
2915  GOSUB 6050
2950  K=82
2955  GOSUB 6100
2960  PRINT "--GRAND TOTAL--      CURRENT          1-30         31-60";
2962  PRINT "        61-90      OVER 90";
2963  GOSUB 6000
2965  PRINT "$";
3003  I=7
3004  GOSUB 2705
3006  Z$="+########."
3007  GOSUB 2030
3065  PRINT TAB(17);
3070  FOR I=8 TO 12
3080  GOSUB 2705
3090  Z$="$+########."
3095  GOSUB 2030
3110  PRINT " ";
3120  NEXT I
3125  GOSUB 6000
3130  K=82
3140  GOSUB 6100
3150  END 
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 
6030  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]=T[L9,1]
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 
7000  PRINT "AGING OF TOP";
7001  INPUT P6
7002  IF INT(P6)=P6 AND P6>0 AND P6<51 THEN 7005
7003  PRINT '7'7"WHAT";
7004  GOTO 7001
7005  MAT T=ZER
7007  PRINT "W A I T !"
7010  FOR L9=1 TO M9
7015  K9=L9
7020  GOSUB 4550
7030  IF B3 THEN 7280
7040  L1=D[R1,2]
7045  T=0
7050  IF L1=0 THEN 7140
7055  GOSUB 7500
7060  GOSUB 460
7070  IF D <= 60 THEN 7140
7120  T=T+(M[R1]+D4*.01)
7130  GOTO 7050
7140  FOR I=1 TO P6
7150  IF T>T[I,2] THEN 7180
7160  NEXT I
7170  GOTO 7280
7180  W=L9
7190  X=T
7200  FOR J=I TO P6
7210  Y=T[J,1]
7220  Z=T[J,2]
7230  T[J,1]=W
7240  T[J,2]=X
7250  W=Y
7260  X=Z
7270  NEXT J
7280  NEXT L9
7290  RETURN 
7500  K9=L1
7510  GOSUB 5205
7520  S1=INT(ABS(N[R1])/10)
7530  D4=ABS(N[R1])-S1*10
7540  D5=INT(O[R1]/10^5)
7550  D4=D4*10+D5
7560  IF SGN(N[R1])#-1 THEN 7570
7565  D4=-D4
7570  L1=O[R1]-D5*10^5
7580  RETURN 
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 K5=1 TO K
9920  PRINT 
9930  NEXT K5
9940  RETURN 
9999  END 
