1  H$='29'31
10  DIM A$[20],Y$[10],H$[2]
11  DIM E[8],P[13],C[4,8],F[400,2]
100  FILES C1,S1,S2,S3,S4
150  READ C9,C8
160  DATA 13,4
200  MAT  READ P
210  DATA 1000,3800,4300,4900,6500,7500,7560,7760,8760,9760,9870,10350,10400
260  DATA "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13"
300  PRINT H$"PROGRAM TO SORT UNITS BY CUST/AGR# AND STORE ON FILE"
305  PRINT 
310  PRINT "AS EACH INTERVAL OF 20 CUSTOMERS IS SORTED, THAT INTERVAL"
311  PRINT "WILL BE DISPLAYED."
312  PRINT 
320  PRINT "PREVIOUS SORT FILE WILL BE DESTROYED IMMEDIATELY"
325  PRINT 
330  PRINT "READY";
340  INPUT A$
345  IF A$[1,1]#"Y" THEN 9999
400  PRINT "SORT UP TO CUST#";
405  INPUT M9
500  FOR I=1 TO 200
510  PRINT #2,I; END 
515  PRINT #3,I; END 
520  NEXT I
530  READ #2,1
540  READ #3,1
550  A1=1
560  A2=20
570  N1=2
600  N5=1
610  S5=0
615  RESTORE 260
620  READ A$
625  ASSIGN A$,1,W5
630  FOR I=1 TO 181 STEP 20
640  PRINT #4,I; END 
650  PRINT #5,I; END 
660  NEXT I
680  PRINT A1,A2
1000  IF  END #1 THEN 1220
1010  MAT  READ #1;E
1020  S5=S5+1
1025  IF E[1]=-1 THEN 1010
1030  S[1]=INT(E[1]/10^4)
1035  S[2]=E[1]-S[1]*10^4
1040  IF S[2]<A1 OR S[2]>A2 THEN 1010
1070  X=INT(S[2]/20)
1075  X1=S[2]-X*20
1080  IF X1#0 THEN 1090
1085  X1=20
1090  R=(X1-1)*20+1
1095  N=4
1100  IF R<201 THEN 1115
1105  N=5
1110  R=R-200
1115  L1=0
1120  IF  END #N THEN 1145
1125  READ #N,R
1130  READ #N;X
1135  L1=L1+1
1140  GOTO 1130
1145  IF L1<639 THEN 1170
1150  PRINT '7'7'7"CUST";S[2];"HAS >639 UNITS"
1160  STOP 
1170  C0=S[1]
1175  GOSUB 3200
1180  S6=S5
1185  IF P=1 THEN 1195
1190  S6=S6-P[P-1]
1195  IF S[1]#5 THEN 1205
1200  S6=S6+900
1205  PRINT #N;(S[1]*10^4+S6), END 
1210  GOTO 1010
1220  N5=N5+1
1230  IF N5>C9 THEN 2000
1240  READ A$
1245  ASSIGN A$,1,W5
1250  GOTO 1000
2000  A=A1
2002  FOR N=4 TO 5
2005  FOR R0=1 TO 181 STEP 20
2010  READ #N,R0
2015  J=0
2020  IF  END #N THEN 2060
2025  READ #N;X
2030  J=J+1
2032  IF J>400 THEN 2045
2035  F[J,1]=X
2040  GOTO 2025
2045  PRINT '7'7'7"CUST";A;"HAS > 400 UNITS"
2050  STOP 
2060  FOR J1=1 TO J
2065  C0=INT(F[J1,1]/10^4)
2070  R=F[J1,1]-C0*10^4
2075  GOSUB 3200
2076  IF P#5 THEN 2080
2078  R=R-900
2080  IF P=1 THEN 2090
2085  R=R+P[P-1]
2090  GOSUB 4000
2095  F[J1,2]=C[R2,7]
2100  NEXT J1
2105  FOR I=2 TO J
2110  FOR J1=I TO 2 STEP -1
2115  IF F[J1,2] >= F[J1-1,2] THEN 2145
2120  FOR I1=1 TO 2
2125  X=F[J1,I1]
2130  F[J1,I1]=F[J1-1,I1]
2135  F[J1-1,I1]=X
2140  NEXT I1
2142  NEXT J1
2145  NEXT I
2150  IF  END #N1 THEN 2300
2155  S1=1
2160  PRINT #N1;-A
2165  S1=2
2170  FOR I=1 TO J
2175  PRINT #N1;F[I,1]
2180  NEXT I
2190  PRINT #N1; END 
2200  A=A+1
2210  NEXT R0
2220  NEXT N
2230  A1=A1+20
2240  A2=A2+20
2250  IF A1 <= M9 THEN 600
2260  END 
2300  N1=N1+1
2305  IF N1<4 THEN 2320
2310  PRINT '7'7'7"CUST SORT FILE FULL";A1;A2;N;R
2315  STOP 
2320  IF  END #N1 THEN 2300
2330  GOTO S1 OF 2160,2175
3200  P=C0
3205  IF C0<9 THEN 3290
3210  P=9
3215  IF C0 <= 16 THEN 3290
3220  P=10
3225  IF C0 <= 23 THEN 3290
3230  P=11
3235  IF C0 <= 27 THEN 3290
3240  P=12
3245  IF C0 <= 29 THEN 3290
3250  P=13
3290  RETURN 
4000  REM
4036  X=R/C8
4038  X1=INT(X)
4040  X2=INT((X-X1)*100)
4042  FOR I=1 TO (C8-1)
4044  IF X2=I*25 THEN 4054
4046  NEXT I
4048  R1=X1
4050  R2=C8
4052  GOTO 4057
4054  R1=X1+1
4056  R2=I
4057  RESTORE 260
4058  FOR N5=1 TO C9
4059  READ A$
4060  IF R1<201 THEN 4100
4062  R1=R1-200
4065  NEXT N5
4067  PRINT "ERR IN P";
4068  STOP 
4100  REM
4101  ASSIGN A$,1,W5
4102  MAT  READ #1,R1;C
4105  IF C[R2,1]=-1 THEN 4200
4195  RETURN 
4200  PRINT '7'7"ERR2";N5,R1,R2
4210  STOP 
9999  END 
