1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         NEWAGE : CTC ACCOUNTS RECEIVABLE 
4  REM
5  REM         36214 REV  B  PART 3 OF 13  2/73 
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
50  H$='26'11'25'24'31'30'29'28
60  DIM H$[8],T$[54],L$[54],X$[1],R$[10],I$[6]
70  DIM A[12],B[12],E[8],K[12],C[2],D[2,2]
80  DIM Z$[54]
100  FILES G1,G2,G3,G4,G10A,G10B,G10C,G0
102  READ #8,1;A9,M9
105  PRINT "(1) TOP OF FORM OR (2) ABDICK";
107  INPUT P5
109  PRINT "AGING OF (1) CTC (2) TA OR (3) ALL INVOICES";
111  INPUT H5
113  IF H5=1 OR H5=2 OR H5=3 THEN 119
115  PRINT '7'7'7'7"WHAT";
117  GOTO 111
119  PRINT "'ALL','ONE','GRAND',OR 'END'";
121  INPUT R$
123  M6=1
125  IF R$[1,1]="E" THEN 9999
127  IF R$[1,1]="A" THEN 137
129  IF R$[1,1]="G" THEN 155
131  IF R$[1,1]="O" THEN 137
133  PRINT "WHAT";
135  GOTO 121
137  PRINT "ENTER CUST#";
139  INPUT X
141  IF X>0 AND X <= (3*200*2) THEN 147
143  PRINT '7'7'7'7"CUST# OVER";3*200*2
145  GOTO 137
147  M8=X
149  IF R$[1,1]="A" THEN 157
151  M6=M9=X
153  GOTO 157
155  M8=0
157  PRINT "DATE (YYMMDD)";
159  INPUT V1
161  C4=INT(V1/10^4)
163  IF C4>71 AND C4<80 THEN 169
165  PRINT '7'7"ILLEGAL DATE"
167  GOTO 157
169  C2=INT((V1-C4*10^4)/100)
171  IF C2<1 OR C2>12 THEN 165
173  C3=V1-C4*10^4-C2*100
175  IF C3<1 OR C3>31 THEN 165
203  MAT  READ K
205  DATA 31,29,31,30,31,30,31,31,30,31,30,31
210  READ C9,C8,E9,E8
215  DATA 2,3,8,4
220  C[1]=5
225  C[2]=0
230  MAT  READ E
235  DATA 1,2,3,5,6,7,8,0
245  MAT A=ZER
250  MAT B=ZER
255  M7=2
260  P9=66
300  FOR L9=M6 TO M9
305  GOTO M7 OF 340,310
310  IF L9#M8 THEN 340
315  M7=1
320  GOSUB 2400
340  FOR I=1 TO 6
345  A[I]=B[I]=0
350  NEXT I
370  K9=L9
372  GOSUB 4550
374  IF  NOT B3 THEN 380
375  IF R$[1,1]="O" THEN 9300
377  GOTO 1155
380  REM
400  F9=0
401  R0=D[R1,1]
402  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
453  GOTO M7 OF 455,457
455  GOSUB 6200
457  F9=1
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 M7 OF 1600,800
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 M7 OF 1600,800
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 "BAD INV DT"
771  PRINT L9,N,R,R1,C2,C3,C4,S2,S3,S4
772  GOTO 680
773  IF C4#S4 THEN 650
774  GOTO M7 OF 775,650
775  PRINT "CUR DT < INV DT"
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 835
820  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  IF F9 THEN 1052
1046  GOTO H5 OF 1047,1155,1047
1047  GOTO M7 OF 1048,1052
1048  GOSUB 6200
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
1057  GOTO M7 OF 1058,1062
1058  I=6
1059  GOSUB 2025
1060  X2=23
1062  FOR I=1 TO 5
1063  GOSUB 2705
1064  GOTO M7 OF 1065,1090
1065  PRINT TAB(X2+(I-1)*12);
1070  GOSUB 2025
1090  NEXT I
1095  GOTO M7 OF 1100,1141
1100  K=2
1110  GOSUB 9900
1120  P9=P9+3
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
1157  IF R$[1,1]="O" THEN 3130
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  Z$="AGED INVOICE AS OF ##/##/##"
2440  Z[1]=C2
2442  Z[2]=C3
2444  Z[3]=C4
2448  X$=" "
2450  GOSUB 9000
2452  GOSUB 6000
2455  P9=5
2457  IF R$[1,1]="G" THEN 2520
2460  K=1
2465  GOSUB 9910
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          #";"";TAB(60)"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  IF R$[1,1]#"G" THEN 2903
2902  GOSUB 2400
2903  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
3100  PRINT " ";
3120  NEXT I
3125  GOSUB 6000
3130  K=82
3140  GOSUB 6100
3150  IF I$="" THEN 9999
3160  CHAIN I$,H3
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]=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  ASSIGN "DT1",8,W5
6505  READ #8,4;I$,H3,H5,R$,M6,M9,M8,C4,C2,C3
6510  P5=1
6515  ASSIGN "G0",8,W5
6520  GOTO 203
9000  REM
9004  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9005  DIM V$[30],Y$[10]
9006  Y$="0123456789"
9007  Z0=Z9-1
9008  Z0=Z0+1
9009  IF Z0=LEN(Z$)+1 THEN 9073
9010  IF Z$[Z0,Z0]="#" THEN 9018
9011  IF Z$[Z0,Z0+1]=".#" THEN 9018
9012  IF Z$[Z0,Z0+1]="+#" THEN 9016
9013  V$[V,V]=Z$[Z0,Z0]
9014  V=V+1
9015  GOTO 9008
9016  Z4=0
9017  GOTO 9008
9018  Z=100
9019  Z6=Z[Z2]
9020  Z9=Z0-1
9021  Z9=Z9+1
9022  IF Z$[Z9,Z9]="." THEN 9025
9023  IF Z$[Z9,Z9]="#" THEN 9021
9024  GOTO 9029
9025  IF Z5#1 THEN 9029
9026  Z5=0
9027  Z=Z9
9028  GOTO 9021
9029  IF Z#100 THEN 9031
9030  Z=Z9
9031  IF Z4=1 THEN 9038
9032  IF Z6 >= 0 THEN 9036
9033  V$[V,V]="-"
9034  V=V+1
9035  GOTO 9038
9036  V$[V,V]=" "
9037  V=V+1
9038  IF Z=Z9 THEN 9041
9039  Z6=ABS(Z6)+5*10^(Z-Z9)
9040  GOTO 9042
9041  Z6=ABS(Z6)+.5
9042  Z7=10^(Z-Z0-1)
9043  Z4=10*Z7
9044  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9045  IF Z1#0 THEN 9050
9046  V$[V,V]="."
9047  V=V+1
9048  Z3=0
9049  GOTO 9069
9050  Z8=INT(Z6/Z7)
9051  IF Z6<Z4 THEN 9055
9052  V$[V,V]="#"
9053  V=V+1
9054  GOTO 9068
9055  Z6=Z6-Z8*Z7
9056  IF Z8=0 THEN 9058
9057  Z3=0
9058  IF Z3=0 THEN 9066
9059  IF Z1#1 THEN 9063
9060  V$[V,V]="0"
9061  V=V+1
9062  GOTO 9068
9063  V$[V,V]=X$
9064  V=V+1
9065  GOTO 9068
9066  V$[V,V]=Y$[Z8+1,Z8+1]
9067  V=V+1
9068  Z7=Z7/10
9069  NEXT Z1
9070  Z3=Z4=Z5=Z7=1
9071  Z2=Z2+1
9072  GOTO 9007
9073  PRINT V$;
9074  V$=""
9075  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 
