Listing of file='SORT302B' on disk='vmedia/701-2047D.wvd.zip'
# Sector 309, program filename = 'SORT302B' 0010 REM SORT302B,00-00(02/18/76),12003A - COPYRIGHT WANG LABS. INC., 1976 0300 COM A,B,R4,C,E,P5,Y : COM X,L,I,H : DIM P7$(36)2,P8$(36)3 : DIM S7$(36)2,S8$(36)3,S4$(255)2 : DIM N1$2,N0$2,P1$3,Y2$3 : DIM S3$2,P$3,X1$2 0500 IF D$<>"D"THEN 532 0502 PRINT HEX(03) : X1$=" " : PRINT "REMOVE INPUT VOLUME AND MOUNT OUTPUT VOLUME" : PRINT "ENTER 'GO' TO RESUME" : INPUT X1$ : IF X1$<>"GO"THEN 502 0515 IF C$="N"THEN 528 : IF C$="X"THEN 525 : LIMITS T#3,O$,X,Y,Z : IF P7<=Y-X+1THEN 532 : STOP "OUTPUT SPACE TOO SMALL" 0525 STOP "NO OUTPUT FILE" 0528 DATA SAVE DC OPEN T$#3,P7,O$ : DATA SAVE DC CLOSE#3 0532 PRINT HEX(030A0A0A0A) : PRINT "PASS 2 - MERGE" : LOAD DA T#2,(S2$,S2$)500,599 0570 DIM S6$(02)2,S5$(03)1 : DIM S0$(005)20,S$(02,005)20,S1$(005)20 : DIM S3$(02)2,P3$(02)3,S9$(04)2 0600 GOTO 5000 0700 IF G>255THEN 1250 : IF S4$(G)=HEX(0000)THEN 1250 : P=VAL(S4$(G)) : Q=VAL(STR(S4$(G),2)) 0820 IF S$<S0$THEN 2680 : S0$=S$ : GOSUB 900 : O1=O1+1 : ADDC(S8$,Y2$) : IF S8$=HEX(000000)THEN 2700 : G=G+1 : GOTO 700 0900 O=O+1 : IF O<=R0THEN 970 0960 O=1 0970 RETURN 1000 MAT MERGES$()TO S5$(),S6$(),S4$() : IF S4$(1)=HEX(0000)THEN 5400 : H=0 : IF S5$(P6+1)=HEX(00)THEN 1050 : GOSUB '40(VAL(S5$(P6+1))) 1050 G=1 : IF L=1THEN 700 1068 R=P2 1110 O=O+R : IF O<=P2THEN 1200 : M2$=S9$(1) : S3$=S9$(2) : MAT COPY S9$()<3,P3>TO S9$() : I=I-1 1180 O=1 1200 G=G+R : IF G>255THEN 1250 : IF S4$(G)=HEX(0000)THEN 1250 : GOTO 1068 1250 GOSUB 1300 : GOTO 1000 1300 IF H=0THEN 1330 1330 RETURN 2000 DEFFN'40(X) : P$=P3$(X) : S3$=S3$(X) : IF P$=HEX(000000)THEN 2140 : IF L=1THEN 2060 : S9$(I)=S3$ : I=I+1 2060 X=0 2070 H=1 : S5$(X)=HEX(01) : S3$(X)=S3$ : ADDC(P$,P3$) : IF P$<P3$(X)THEN 2130 : INIT(00)P$ 2130 P3$(X)=P$ 2140 RETURN 2680 STOP "SEQUENCE ERROR" 2700 IF O=1THEN 2770 2740 GOSUB 900 : GOTO 2700 2770 DATA SAVE DC $#3,END : DATA SAVE DC CLOSE#3 : PRINT "INPUT RECORDS ",R2 : PRINT "OUTPUT RECORDS",O1 : COM CLEAR M$ : IF M$=" "THEN 2820 : LOAD DC T#6,M$ 2820 STOP "END OF SORT" 5000 L=0 : O1=0 : R4=9E9 : INIT(00)S0$ : IF S9>P6THEN 5020 : GOSUB 6400 : C=S9 : GOTO 5080 5020 C=P6 : X=INT((S9-1)/(P6-1)) : X=S9-1-(P6-1)*X : IF X=0THEN 5080 : C=X+1 5080 I=1 : INIT(FF)S5$() : INIT(00)P1$ : FOR Y=1TO C 5130 R4=R4+1 : IF R4>S9THEN 6000 5150 B=B+1 : IF B>ATHEN 5700 : S3$(Y)=S7$(B) : P3$(Y)=S8$(B) : ADDC(P1$,S8$(B)) : IF S8$(B)=HEX(000000)THEN 5230 : H=0 : GOSUB '40(Y) : GOSUB 1300 5230 NEXT Y : S8$=P1$ : S7$=S9$(1) : O=1 : GOTO 1000 5400 E=E+1 : S4=S4+1 : IF S4<=36THEN 5460 : GOSUB 5900 : S4=1 5460 IF L=1THEN 2700 : IF S9+E-R4>P6THEN 5470 : GOSUB 6400 5470 P8$(S4)=S8$ : P7$(S4)=S7$ : C=P6 : GOTO 5080 5700 GOSUB 5800 : P5=P5-36 : A=36 : IF P5>=0THEN 5150 : A=P5+36 : GOTO 5150 5800 DATA LOAD DA T#2,(N0$,N0$)S7$(),S8$() : B=0 : RETURN 5900 DATA SAVE DA T$#2,(N1$,N1$)P7$(),P8$() : S4=0 : RETURN 6000 IF R4>9E9THEN 6300 : IF E>36THEN 6070 : MAT COPY P7$()TO S7$() : MAT COPY P8$()TO S8$() : GOTO 6110 6070 GOSUB 5900 : N0$,N1$=M0$ : GOSUB 5800 6110 S9=E 6120 E=0 : P5=S9-36 : S4=0 : B=0 : R4=0 : A=36 : IF P5>=0THEN 5130 : A=P5+36 : GOTO 5130 6300 N0$,N1$=M0$ : GOSUB 5800 : S8$(1)=S8$ : S7$(1)=S7$ : GOTO 6120 6400 L=1 : INIT(FF)Y2$ : SCRATCH T#3,O$ : DATA SAVE DC OPEN T$#3,O$,O$ : RETURN