Listing of file='SORT403A' on disk='vmedia/701-2425A.wvd.zip'
# Sector 292, program filename = 'SORT403A' 0010 REM SORT403A, RELEASE 4-0,(10/16/78)-COPYRIGHT WANG LABS, INC. 0300 COM A$18,P1,K$1,Z$(1)4,X$(1)64,X$64,G,O 0420 PRINT "OUTPUT FILE ";N$(4);TAB(26);"DEVICE ";F$(4);TAB(45);"CATALOGUED ";C$ : X$="FULL-RECORD" : ON P0GOTO 480 : X$="KEY" : IF P8$="K"THEN 480 : X$="TAG" 0480 PRINT X$;" SORT" : A$=HEX(B240EA3FE225E65ED326DE21DC3BC557) : P1=2 : X2$=N7$ : GOSUB 8960 : K$="Q" : Y=2 : GOSUB '82(500) : X$="P4$(00)2,P3$(00)1,P0$(00)2,P1$(00)3,P9$(00)2," : CONVERT P6TO X1$,(##) : STR(X$,5,2),STR(X$,23,2),STR(X$,32,2)=X1$ : CONVERT P6+1TO STR(X$,14,2),(##) : CONVERT P6+3TO STR(X$,41,2),(##) : GOSUB 7570 0650 X$="O$(000)62," : C=INT((P2*N5+1)/62)+1 : CONVERT CTO STR(X$,4,3),(###) : GOSUB 7570 : CONVERT P2TO P6$,(###) : FOR P=N3TO 1STEP -1 : X$="O0$(000)00,M0$(00,000)00," : CONVERT PTO Y$,(#) : STR(X$,2,1),STR(X$,13,1)=Y$ : STR(X$,5,3),STR(X$,19,3)=P6$ : STR(X$,16,2)=X1$ : CONVERT O(P)TO P5$,(##) : STR(X$,9,2),STR(X$,23,2)=P5$ : GOSUB 7570 : NEXT P 0800 IF P8$<>"K"THEN 830 : LOAD DC T#F(5),"SORT405A"10,6999 0830 IF P0*M7=0THEN 870 : X$="M9$0," : CONVERT M7+1TO STR(X$,4,1),(#) : GOSUB 7570 0870 IF P0=1THEN 980 : X$="N1$4,N0$00,A0$(50)4," : CONVERT 2*N3TO STR(X$,9,2),(##) : IF N3>1THEN 940 : STR(X$,6)=STR(X$,12) 0940 GOSUB 7570 : GOTO 1130 0980 FOR N9=1TO P3 : X=1 : GOSUB '86(0) : GOSUB 7570 : NEXT N9 : FOR P=1TO L : X=1 : GOSUB '81(0,P) : IF X<7THEN 1100 : GOSUB 7570 1100 NEXT P 1130 IF N3=1THEN 1210 : C=INT((N5-1)/64)+1 : D=INT((N5-1)/C)+1 : X$="N0$(0)00," : CONVERT CTO STR(X$,5,1),(#) : CONVERT DTO STR(X$,7,2),(##) : GOSUB 7570 1210 X$="L$00,K$00," : CONVERT O(1)TO X1$,(##) : STR(X$,3,2),STR(X$,8,2)=X1$ : GOSUB 7570 : Y=1 : GOSUB '82(620) : IF N3=1THEN 1430 : X$=HEX(EAE2) : STR(X$,3)="(F=N0$)N0$()FROMK$," : Y=0 : GOSUB 7570 : FOR P=2TO N3 : X$="O0$(O)," : CONVERT PTO STR(X$,2,1),(#) : GOSUB 7570 : NEXT P : GOSUB 8760 : Y=1 1430 IF P0=1THEN 1520 : X$="?^(F=N1$)N0$()@A0$(Q):" : GOSUB '91(10) : GOSUB 7560 : GOTO 2770 1520 Y=0 : P=0 : N=N1 1525 P=P+1 : IF P>LTHEN 1990 : IF X3$(P)=HEX(01)THEN 1525 : X$=HEX(EAE628463D4E3124294E30242829B2) : GOSUB '91(10) : GOSUB 7570 : FOR C=1TO K : P=VAL(STR(X6$,C)) : IF X6$(P)<>HEX(01)THEN 1640 : X=1 : GOSUB '81(VAL(STR(X5$,C)),P) : GOSUB 7570 1640 NEXT C : C=C*2 : N9=1 : M5=VAL(X1$(1)) : IF M7=0THEN 1770 : X$="M9$," : GOSUB 7570 : C=C+2 : N=N+M7 1770 FOR P=1TO L : X1=VAL(X3$(P)) : X6=VAL(X6$(P)) : IF X6>250THEN 1960 : IF X1=1THEN 1960 : IF X6=1THEN 1960 : IF C<M5THEN 1950 : GOSUB 8760 : X$="?^(F=NX$)N0$()<000>@" : N9=N9+1 : CONVERT N9TO STR(X$,7,1),(#) : CONVERT N+1TO STR(X$,16,3),(###) : C=0 : M5=VAL(X1$(N9)) : GOSUB '91(10) : GOSUB 7560 1950 GOSUB '87(0) 1960 NEXT P : GOSUB 8760 1990 IF N4=0THEN 2080 : C=250 : FOR P=1TO L : IF X3$(P)<>HEX(01)THEN 2040 : GOSUB '87(1) 2040 NEXT P : GOSUB 8760 2080 Y=1 : FOR C=1TO K : P=VAL(STR(X6$,C)) : IF X6$(P)<>HEX(01)THEN 2180 : IF STR(X9$,C,1)<>HEX(01)THEN 2180 : X$=HEX(8C28) : X=3 : GOSUB '81(1,P) : STR(X$,X+1)="FF):" : GOSUB 7570 2180 NEXT C : M6=N : IF F$<>"A"THEN 2320 : GOSUB '82(720) : X$=HEX(9AFF09003A) : GOSUB 7570 : GOSUB '82(940) 2320 Y=0 2330 N9=N9+1 : IF N9>P3THEN 2740 : Z=VAL(X0$(N9)) : IF Z>LTHEN 2740 : P=Z : N=0 : GOSUB 6080 : IF M7<1THEN 2480 : X$="M9$," : GOSUB 7570 : C=C+2 : N=N+M7 2480 P=P+1 : IF P>LTHEN 2710 : IF C<M5THEN 2610 : IF X3$(P)<HEX(02)THEN 2710 : GOSUB 8760 : N9=N9+1 : IF N9>P3THEN 2680 : IF VAL(X0$(N9))<>PTHEN 2680 : GOSUB 6080 2610 X=1 : GOSUB '81(9E9,P) : GOSUB 7570 : C=C+2 : N=N+VAL(X4$(P))*VAL(X5$(P))*VAL(X7$(P)) : GOTO 2480 2680 E=34 : GOTO 7020 2710 GOSUB 8760 : GOTO 2330 2740 Y=1 2770 LOAD DC T#F(5),"SORT404A"10,6999 5170 DEFFN'86(Q) : GOSUB '80(VAL(X0$(N9))) : STR(X$,X)=X1$ : STR(X$,X+2)="$" : X=X+3 : M5=VAL(X1$(N9)) : IF M5<128THEN 5320 : M5=M5-128 : STR(X$,X)="(1)" : IF Q<9E9THEN 5300 : STR(X$,X)="()" : X=X-1 5300 X=X+3 5320 IF Q>0THEN 5350 : CONVERT M5TO STR(X$,X,2),(##) : X=X+2 5350 STR(X$,X)="," : RETURN 5480 DEFFN'87(M9) : Q,X5=VAL(X5$(P)) : IF X5=1THEN 5740 : Q=9E9 : IF X7$(P)=HEX(01)THEN 5740 : FOR Q=1TO X5 5580 X=1 : GOSUB '81(Q,P) : IF M9=0THEN 5670 : C=C+X : IF C<211THEN 5690 : GOSUB 5900 : GOTO 5580 5670 C=C+2 5690 N=N+VAL(X4$(P))+M9 : GOSUB 7570 : NEXT Q : RETURN 5740 X=1 : GOSUB '81(Q,P) : IF M9=0THEN 5830 : C=C+X : IF C<211THEN 5850 : GOSUB 5900 : GOTO 5740 5830 C=C+2 5850 N=N+(VAL(X4$(P))+M9)*X5 : GOSUB 7570 : RETURN 5900 X$="?^N0$()<000>@" : CONVERT N+1TO STR(X$,9,3),(###) : GOSUB '91(3) : GOSUB 7560 : N=N+3 : C=0 : RETURN 6080 X$="?%(F=" : X=6 : GOSUB '86(1) : STR(X$,X)=")" : X=X+1 : IF M7>0THEN 6390 : GOSUB '80(Z) : STR(X$,X)=X1$ : STR(X$,X+2)="$" : X=X+3 : IF F$=" "THEN 6430 : IF X5$(Z)=HEX(01)THEN 6300 : STR(X$,X)="()" : X=X+2 : IF F$="A"THEN 6480 6300 STR(X$,X)="<Q+00000>" : IF N=0THEN 6350 : CONVERT NTO STR(X$,X+3,5),(#####) : X=X+9 : GOTO 6530 6350 STR(X$,X)="<Q>" : X=X+3 : GOTO 6530 6390 STR(X$,X)="O$()" : X=X+4 : GOTO 6480 6430 IF B=1THEN 6480 : STR(X$,X)="(Q)" : X=X+3 6480 IF N=0THEN 6530 : STR(X$,X)="<00000>" : CONVERT N+1TO STR(X$,X+1,5),(#####) : X=X+7 6530 C=0 : STR(X$,X)="FROM" : GOSUB 7560 : RETURN 6720 DEFFN'91(A) : IF N3>1THEN 6760 : STR(X$,A,2)="K$" : STR(X$,A+2)=STR(X$,A+5) 6760 RETURN 7017 DEFFN'31 : E=28 7020 LOAD DC T#F(5),"SORT490A" 7560 $TRAN(X$,A$)R 7570 X=LEN(X$) : IF X+G<254THEN 7820 : MAT COPY D$()<O,3>TO X$() : D=O : IF H=OTHEN 7700 : Z$(1)=HEX(0D0000) : MAT COPY Z$()TO D$()<O-1,3> : D=O+2 7700 GOSUB 8820 : D=2 : IF H=OTHEN 7760 : GOSUB '85(M+1,2) 7760 MAT COPY X$()TO D$()<O,3> : MAT COPY D$()<O,G-O>TO D$()<D,G-O> : G=G-O+D : H,O=2 7820 X$(1)=X$ : MAT COPY X$()TO D$()<G,X> : G=G+X : IF Y=0THEN 7870 : O=G 7870 RETURN 7910 DEFFN'80(A) : D=INT((A-1)/10) : BIN(X1$)=65+D : BIN(STR(X1$,2))=47+A-D*10 : RETURN 8080 DEFFN'81(Q,A) : X1=VAL(X3$(P)) : GOSUB '80(A) : STR(X$,X)=X1$ : X=X+2 : IF STR(X0$,X1+1,1)<HEX(A0)THEN 8180 : STR(X$,X)="$" : X=X+1 8180 Y$="(" : D=VAL(X5$(P)) : IF D=1THEN 8320 : STR(X$,X)="(" : X=X+1 : Y$="," : IF Q=9E9THEN 8465 : IF Q=0THEN 8280 : D=Q 8280 CONVERT DTO STR(X$,X,3),(###) : X=X+3 8320 IF X6$(P)=HEX(03)THEN 8350 : IF X7$(P)=HEX(01)THEN 8465 8350 STR(X$,X)=Y$ : X=X+1 : Y$="," : IF Q=9E9THEN 8465 : IF Q=0THEN 8440 : STR(X$,X)=K$ : X=X+1 : GOTO 8465 8440 CONVERT BTO STR(X$,X,3),(###) : X=X+3 8465 IF Y$="("THEN 8477 : STR(X$,X)=")" : X=X+1 8477 IF Q>0THEN 8500 : IF STR(X0$,X1+1,1)<HEX(A0)THEN 8500 : CONVERT VAL(X4$(P))TO STR(X$,X,3),(###) : X=X+3 8500 STR(X$,X)="," : RETURN 8540 DEFFN'82(M) : IF O=GTHEN 8580 : GOSUB 8760 8580 IF H=GTHEN 8630 : Z$(1)=HEX(0D0000) : MAT COPY Z$()TO D$()<O-1,3> : H,G,O=G+2 8630 IF M=0THEN 8720 : IF G<240THEN 8700 : D=G : GOSUB 8820 : H,G,O=2 8700 GOSUB '85(M,G) : G=D 8720 RETURN 8760 Z$(1)=HEX(3A) : MAT COPY Z$()TO D$()<G-1,1> : O=G : RETURN 8820 Z$(1)=HEX(FD) 8830 MAT COPY Z$()TO D$()<D,1> : DATA SAVE BA T$#F(3),(X2$,X2$)D$() : RETURN 8880 DEFFN'85(M,D) : Z$(1)=HEX(FF000093) : PACK(####)STR(Z$(1),2,2)FROMM : MAT COPY Z$()TO D$()<D,4> : D=D+3+SGN(INT(Y/2)) : RETURN 8960 D$(1)=HEX(40) : D=10 : GOSUB 8820 : D$(1)=HEX(00) : H,O,G=2 : RETURN 9040 GOSUB '82(0) : STR(D$(1),1,1)=HEX(20) : Z$(1)=HEX(FE) : D=G : GOSUB 8830 : RETURN