1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         ARSORT : CTC ACCOUNTS RECEIVABLE 
4  REM
5  REM         36214 REV  B  PART 13 OF 13   2/73 
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  DIM F[335,4],T[3,2]
11  DIM Y$[10],A$[20],Z$[20],X$[1],I$[6]
12  P0=0
20  PRINT "(1) TOP OF FORM OR (2) ABDICK";
25  INPUT P5
100  FILES ARD1
101  PRINT "FILE# (1 OR 2)";
102  INPUT X
103  IF X=1 THEN 200
104  ASSIGN "ARD2",1,W5
105  IF X=2 THEN 200
106  PRINT '7'7"WHAT";
107  GOTO 101
200  PRINT "CURRENT DATE";
205  INPUT X
210  D1=INT(X/10^4)
215  D2=INT((X-D1*10^4)/100)
220  D3=X-D1*10^4-D2*100
300  PRINT "SORT BY ACCT# OR REF# (A/R)";
305  INPUT A$
310  G0=1
315  IF A$[1,1]="A" THEN 500
320  G0=2
325  IF A$[1,1]="R" THEN 500
330  PRINT '7'7'7"WHAT";
335  GOTO 305
500  MAT T=ZER
505  MAT F=ZER
510  Y$="0123456789"
515  P9=66
520  F0=0
1000  FOR I0=1 TO 335
1005  IF  END #1 THEN 1070
1010  FOR J=1 TO 4
1015  READ #1;F[I0,J]
1020  NEXT J
1030  NEXT I0
1035  GOTO 1200
1070  F0=1
1200  I0=I0-1
1285  FOR J1=2 TO I0
1290  FOR J2=J1 TO 2 STEP -1
1292  GOTO G0 OF 1295,1322
1295  X=INT(F[J2,1]/100)
1300  X1=INT(F[J2-1,1]/100)
1310  IF X>X1 THEN 1380
1315  IF X#X1 THEN 1325
1320  IF F[J2,2] >= F[J2-1,2] THEN 1380
1321  GOTO 1325
1322  IF ABS(F[J2,3]) >= ABS(F[J2-1,3]) THEN 1380
1325  FOR J3=1 TO 4
1330  X=F[J2,J3]
1340  F[J2,J3]=F[J2-1,J3]
1350  F[J2-1,J3]=X
1360  NEXT J3
1370  NEXT J2
1380  NEXT J1
2000  REM
2010  GOSUB 8000
2015  GOTO G0 OF 2020,2035
2020  J2=INT(F[1,1]/100)
2025  J3=F[1,2]
2030  GOTO 2080
2035  J2=ABS(F[1,3])
2080  FOR J=1 TO I0
2085  X=INT(F[J,1]/100)
2087  X1=F[J,1]-X*100
2088  GOTO G0 OF 2090,2093
2090  IF X=J2 AND F[J,2]=J3 THEN 2115
2092  GOTO 2095
2093  IF ABS(F[J,3])=J2 THEN 2115
2095  GOSUB 6000
2100  GOSUB 2300
2105  GOSUB 6000
2107  P9=P9+3
2110  GOTO G0 OF 2111,2114
2111  J2=X
2112  J3=F[J,2]
2113  GOTO 2115
2114  J2=ABS(F[J,3])
2115  GOSUB G0 OF 3005,3105
2120  GOSUB G0 OF 3100,3000
2125  S=SGN(F[J,3])
2130  T[1,1]=F[J,4]*S
2135  T[1,2]=X1*S
2140  I=1
2145  GOSUB 2325
2150  P9=P9+1
2155  IF P9<58 THEN 2165
2160  GOSUB 8000
2165  NEXT J
2205  GOSUB 6000
2210  GOSUB 2300
2215  GOSUB 6000
2220  GOSUB 2315
2225  P9=P9+4
2230  IF F0=0 THEN 500
2235  IF I$="" THEN 9999
2240  CHAIN I$,H3
2300  PRINT "TOTAL";
2305  I=2
2310  GOTO 2325
2315  PRINT "GRAND TOTAL";
2320  I=3
2325  Z$="$ "
2330  IF T[I,1] >= 0 AND T[I,2] >= 0 THEN 2345
2335  Z$="$-"
2345  PRINT TAB(38);Z$;
2350  Z$="#######."
2355  X$=" "
2360  Z[1]=T[I,1]
2365  GOSUB 9000
2370  Z$="##"
2375  X$="0"
2380  Z[1]=T[I,2]
2385  GOSUB 9000
2390  GOSUB 6000
2395  IF I=3 THEN 2440
2400  X2=T[I+1,1]+T[I,1]
2405  X3=T[I+1,2]+T[I,2]
2410  GOSUB 3300
2420  T[I+1,1]=X2
2430  T[I+1,2]=X3
2435  T[I,1]=T[I,2]=0
2440  RETURN 
3000  PRINT TAB(21);
3005  X$=" "
3010  IF X#0 THEN 3025
3015  PRINT "    ";
3020  GOTO 3045
3025  Z$="####"
3030  Z[1]=X
3035  GOSUB 9000
3040  X$="0"
3045  Z$="######"
3050  Z[1]=F[J,2]
3055  GOSUB 9000
3060  RETURN 
3100  PRINT TAB(25);
3105  Z$="######"
3110  X$=" "
3115  Z[1]=ABS(F[J,3])
3120  GOSUB 9000
3125  RETURN 
3300  REM
3310  IF X3>-100 THEN 3325
3315  X2=X2-1
3320  X3=X3+100
3325  IF X3>99 THEN 3350
3330  IF SGN(X2)*SGN(X3) >= 0 THEN 3345
3335  X2=X2-SGN(X2)
3340  X3=X3-100*SGN(X3)
3345  RETURN 
3350  X2=X2+INT((X3*.01))
3355  X3=(X3*.01-INT(X3*.01))*100
3360  IF X3-INT(X3)<.9 THEN 3370
3365  X3=INT(X3)+1
3370  RETURN 
6000  PRINT 
6010  FOR H=1 TO 30
6020  PRINT '21;
6030  NEXT H
6040  RETURN 
6500  ASSIGN "DT1",1,W5
6502  READ #1,8;I$,H3,A$,D1,D2,D3,G0
6505  P5=1
6510  ASSIGN A$,1,W5
6520  GOTO 500
8000  GOTO P5 OF 8001,8003
8001  PRINT '12'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21'21;
8002  GOTO 8005
8003  K=66-P9
8004  GOSUB 9900
8005  K=4
8007  GOSUB 9900
8010  A$="ACCT#"
8015  IF G0=1 THEN 8025
8020  A$="REF#"
8025  PRINT "INPUT FILE BY ";A$;" -- ";D1;"/";D2;"/";D3;TAB(41)"PAGE: ";
8030  Z$="###"
8035  X$=" "
8040  Z[1]=P0=P0+1
8045  GOSUB 9000
8050  K=3
8055  GOSUB 9900
8060  GOTO G0 OF 8065,8075
8065  PRINT "  ACCOUNT#";TAB(27)"REF#";
8070  GOTO 8080
8075  PRINT "  REF#";TAB(23)"ACCOUNT#";
8080  PRINT TAB(44);"AMOUNT"
8085  K=2
8090  GOSUB 9900
8095  P9=10
8100  RETURN 
9000  REM
9003  LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9006  LET Z0=Z9-1
9007  LET Z0=Z0+1
9008  IF Z0=LEN(Z$)+1 THEN 9059
9009  IF Z$[Z0,Z0]="#" THEN 9016
9010  IF Z$[Z0,Z0+1]=".#" THEN 9016
9011  IF Z$[Z0,Z0+1]="+#" THEN 9014
9012  PRINT Z$[Z0,Z0];
9013  GOTO 9007
9014  LET Z4=0
9015  GOTO 9007
9016  LET Z=100
9017  LET Z6=Z[Z2]
9018  LET Z9=Z0-1
9019  LET Z9=Z9+1
9020  IF Z$[Z9,Z9]="." THEN 9023
9021  IF Z$[Z9,Z9]="#" THEN 9019
9022  GOTO 9027
9023  IF Z5#1 THEN 9027
9024  LET Z5=0
9025  LET Z=Z9
9026  GOTO 9019
9027  IF Z#100 THEN 9029
9028  LET Z=Z9
9029  IF Z4=1 THEN 9034
9030  IF Z6 >= 0 THEN 9033
9031  PRINT "-";
9032  GOTO 9034
9033  PRINT " ";
9034  LET Z6=ABS(Z6)+10^(Z-Z9-1)
9035  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9036  IF Z$[Z-Z1,Z-Z1]#"." THEN 9041
9037  PRINT ".";
9038  LET Z3=0
9039  LET Z7=2
9040  GOTO 9055
9041  LET Z8=INT(Z6/(10^(Z1+Z7-2)))
9042  IF Z6<10^(Z-Z0) THEN 9045
9043  PRINT "#";
9044  GOTO 9055
9045  LET Z6=Z6-Z8*10^(Z1+Z7-2)
9046  IF Y$[Z8+1,Z8+1]="0" THEN 9048
9047  LET Z3=0
9048  IF Z3=0 THEN 9054
9049  IF Z1#1 THEN 9052
9050  PRINT "0";
9051  GOTO 9055
9052  PRINT X$;
9053  GOTO 9055
9054  PRINT Y$[Z8+1,Z8+1];
9055  NEXT Z1
9056  LET Z3=Z4=Z5=Z7=1
9057  LET Z2=Z2+1
9058  GOTO 9006
9059  RETURN 
9900  FOR I=1 TO K
9910  PRINT 
9920  NEXT I
9930  RETURN 
9999  END 
