Listing of file='SORT401A' on disk='vmedia/701-2425A.wvd.zip'
# Sector 119, program filename = 'SORT401A' 0010 REM SORT401A,RELEASE 4-1,11/08/78,COPYRIGHT WANG LABS. 0200 COM N0,N2,N3,N4,N5,N7,C(15) : COM X7$(60)1,X4$(60)1,X5$(60)1,X6$(60)1,X3$(60)1 : DIM X$64,X0$(60)1,X1$(60)1,X2$(60)2,Y1$1,A$(4)62,I$8 : DIM M0$(1)19,X0$10 : DATA LOAD DA T#F(3),(J(1),X)A$(),I$ : INIT(20)X0$() : INIT(00)X6$(),X2$() : INIT(01)X7$() : PRINT "NUMBER OF KEY FIELDS ";K 0560 E=26 : IF K<>INT(K)THEN 7020 : IF K<1THEN 7020 : IF K>10THEN 7020 : FOR X=1TO 15 : C(X)=0 : NEXT X : IF I$=" "THEN 850 : X$=HEX(A001A00150025001500350035003500250025002A001A001A001) : $UNPACK(F=X$)A$()<49>TO B$,F$,M8,M7,I,N6,N0,N7,L,X,X3$(),X4$(),X5$() : X=0 0730 X=X+1 : P=INT(VAL(X3$(X))/16) : BIN(X3$(X))=P : IF X=LTHEN 4320 : IF P>0THEN 730 : IF X3$(X+1)<HEX(20)THEN 730 : X6$(X)=HEX(FF) : GOTO 730 0850 IF B$<>"B"THEN 950 : IF F$=" "THEN 3690 : N8=1 : M8=1 : X0$(1)=HEX(00) : X1$(1)=HEX(40) : X2$(1)=HEX(0004) : GOTO 1370 0950 X=I(4) : Y1$=HEX(FD) : N8=0 : M8=0 : E=13 1010 DATA LOAD BA T#F(1),(X,X)D$() : M8=M8+1 : IF M8<>VAL(STR(D$(1),2))THEN 7020 : Y=3 1060 MAT COPY D$()<Y,1>TO J$() : Y$=J$(1) : IF Y$=HEX(FD)THEN 1310 : IF N8=0THEN 1120 : IF Y$=Y1$THEN 1210 1120 N8=N8+1 : IF N8>60THEN 3720 : Y1$=Y$ : BIN(X0$(N8))=1 : IF Y$=HEX(08)THEN 1230 : BIN(X0$(N8))=0 : IF Y$<HEX(81)THEN 7020 : IF Y$>HEX(FC)THEN 7020 1210 AND (Y$,7F) 1230 X1$(N8)=Y$ : ADDC(X2$(N8),01) : Y=Y+1+VAL(Y$) : IF Y<257THEN 1060 : GOTO 7020 1310 Y$=D$(1) : IF Y$=HEX(81)THEN 1370 : IF Y$=HEX(82)THEN 1010 : GOTO 7020 1370 N7=0 : Y$=" " : MAT SEARCHA$(),<>Y$TO J$() : IF F$=" "THEN 1500 : IF J$(1)=HEX(0000)THEN 3690 : IF F$="A"THEN 2140 : IF F$="P"THEN 2140 : IF F$="T"THEN 2140 : IF F$="V"THEN 2140 : E=24 : GOTO 7020 1500 I=1 : X=0 1520 X=X+1 : IF X>N8THEN 1640 : Y=VAL(X2$(X))*256+VAL(STR(X2$(X),2)) : Z=Y/B : E=4 : IF Z<>INT(Z)THEN 7020 : IF Z>255THEN 3720 : INIT(00)X2$(X) : BIN(STR(X2$(X),2))=Z : GOTO 1520 1640 IF J$(1)>HEX(0000)THEN 2230 : L=0 : H=0 : FOR P=1TO N8 : X3=VAL(X0$(P)) : X4=VAL(X1$(P)) : X5=VAL(STR(X2$(P),2)) : N=N7+X5 1760 IF H>NTHEN 2010 : IF H>N7THEN 1890 : X=9E9 : FOR G=1TO K : C=VAL(STR(X6$,G)) : IF C>XTHEN 1850 : IF C<=HTHEN 1850 : X=C 1850 NEXT G : H=X : GOTO 1760 1890 IF X5=1THEN 2010 : X=H-N7 : IF X=1THEN 1950 : GOSUB '49(X-1) 1950 GOSUB '49(1) : N7=N7+X : X5=X5-X : IF X5=0THEN 2030 : GOTO 1760 2010 GOSUB '49(X5) : N7=N 2030 NEXT P : GOTO 4320 2060 DEFFN'49(Y) : L=L+1 : BIN(X3$(L))=X3 : BIN(X4$(L))=X4 : BIN(X5$(L))=Y : RETURN 2140 IF N8>1THEN 3690 : IF X0$(1)>HEX(00)THEN 3690 : E=38 : IF X2$(1)<HEX(0002)THEN 7020 : IF X2$(1)>HEX(00FF)THEN 3720 2230 G=0 : L=0 : GOSUB 3510 : M0$(1)="#AFIDUPSW0123456789" : X0$=HEX(7C087C100E0D0D070707) : IF M0=3THEN 2610 : STR(X0$,1,3)=HEX(400840) 2610 FOR P=1TO 4 : X$=A$(P) 2640 X=POS(X$=20) : Y=POS(STR(X$,X)>20) : IF Y=0THEN 2700 : STR(X$,X)=STR(X$,X+Y-1) : GOTO 2640 2700 IF X$=" "THEN 4270 : L=L+1 : IF L>60THEN 3720 : IF G=0THEN 3690 : MAT SEARCHM0$(),=STR(X$,1,1)TO J$() : X3=VAL(STR(J$(1),2)) : IF X3=0THEN 3660 : IF X3=1THEN 2840 : IF X3<10THEN 2880 : X3=0 : GOTO 2900 2840 A=1 : X4=8 : GOTO 2980 2880 X$=STR(X$,2) 2900 A=NUM(STR(X$,1,LEN(X$))) : IF A=0THEN 3660 : CONVERT STR(X$,1,A)TO X4 : X4=INT(X4) : IF X4<1THEN 3660 : X=VAL(STR(X0$,X3+1)) : IF X4>XTHEN 3660 2980 Y$=STR(X$,A+1) : X$=STR(X$,A+2) : X5=1 : IF Y$<>"("THEN 3150 : A=NUM(STR(X$,1,LEN(X$))) : IF A=0THEN 3660 : CONVERT STR(X$,1,A)TO X5 : IF X5<>INT(X5)THEN 3660 : IF X5<1THEN 3660 : IF X5>255THEN 3660 : IF STR(X$,A+1,1)<>")"THEN 3660 : Y$=STR(X$,A+2) : X$=STR(X$,A+3) 3150 N7=N7+X5 : X6=1 : IF Y$=","THEN 3250 : X6=2 : IF Y$=" "THEN 3250 : IF Y$=":"THEN 3250 : IF Y$<>";"THEN 3660 3250 IF X3>1THEN 3780 : IF X6=1THEN 3660 : IF L<>H+1THEN 3660 : IF X0<>X3THEN 3690 : IF X1<>X4THEN 3690 : IF F$>" "THEN 3690 : C=X2-X5 : IF C<0THEN 3690 : IF C=0THEN 3470 : BIN(X5$(H))=X5 : BIN(X5$(L))=C : X3$(L)=X3$(H) : X4$(L)=X4$(H) : H=L : GOTO 2700 3470 L=L-1 : GOSUB 3510 : GOTO 2700 3510 C=0 : G=G+1 : IF G<=N8THEN 3560 : G=0 : RETURN 3560 H,L=L+1 : IF L>60THEN 3720 : X0=VAL(X0$(G)) : BIN(X3$(H))=X0 : X1=VAL(X1$(G)) : BIN(X4$(H))=X1 : X2=VAL(STR(X2$(G),2)) : BIN(X5$(H))=X2 : RETURN 3660 E=23 : GOTO 7020 3690 E=22 : GOTO 7020 3720 E=14 : GOTO 7020 3750 E=25 : GOTO 7020 3780 IF X0>0THEN 3690 : X6$(H)=HEX(FF) : BIN(X3$(L))=X3 : BIN(X5$(L))=X5 : BIN(X4$(L))=X4 : C=C+X4*X5 : IF X6=1THEN 2700 : IF F$>" "THEN 4050 : IF C<>X1THEN 3690 : IF X2=1THEN 4020 : X2=X2-1 : BIN(X5$(H))=1 : IF L>59THEN 3720 : BIN(X5$(L+1))=X2 : X3$(L+1)=X3$(H) : X4$(L+1)=X4$(H) : H,L=L+1 : C=0 : GOTO 2700 4020 GOSUB 3510 : GOTO 2700 4050 IF Y$<>" "THEN 3660 : I=C : N0=X1*X2 : G=0 : IF F$>"P"THEN 4170 : IF I*B>N0THEN 3750 : IF F$="P"THEN 2700 : I=1 : GOTO 2700 4170 IF N6<0THEN 3660 : IF N6<>INT(N6)THEN 3660 : M7=1+SGN(INT(N0/257)) : IF I+N6+2*M7>N0THEN 3750 : B=INT((N0-M7)/(I+M7)) : GOTO 2700 4270 NEXT P : IF G>0THEN 3690 4320 IF N7>255THEN 3720 : M9=SGN(VAL(F$)-32) : BIN(B$)=189+SGN(VAL(B$)-32) : IF F$>"A"THEN 4560 : E=37 : IF M9*B=1THEN 7020 : IF B=1THEN 4560 : FOR P=1TO L : C=SGN(INT(VAL(X3$(P))/2)) : IF C+M9=1THEN 4530 : BIN(X7$(P))=B 4530 NEXT P 4560 N1=0 : E=21 : FOR G=1TO K : Y=VAL(STR(X6$,G)) : C,H=0 4720 H=H+1 : IF H>LTHEN 7020 : IF X6$(H)=HEX(FF)THEN 4720 : X5=VAL(X5$(H)) : IF C+X5>=YTHEN 4800 : C=C+X5 : GOTO 4720 4800 BIN(STR(X5$,G))=Y-C : BIN(STR(X6$,G))=H : IF G>1THEN 4890 : PRINTUSING 4870,Y; : GOTO 4900 4870 %KEY FIELDS ### 4880 %,### 4890 PRINTUSING 4880,Y; 4900 X3=VAL(X3$(H)) : X4=VAL(X4$(H)) : X6=VAL(X6$(H)) : X7=VAL(STR(X7$,G)) : X8=VAL(STR(X8$,G)) : X0=X7+X8 : ON X3+1GOTO 5000,5450,5000,5310,5340,5370,5370,5280,5250,5120 : GOTO 7020 5000 IF X0=0THEN 5140 : IF X7>0THEN 5040 : X7=1 5040 IF X8>0THEN 5060 : X8=X4-X7+1 5060 IF X7+X8-1>X4THEN 7020 : C(7)=C(7)+1 : IF X5>1THEN 5170 : X6=2 : GOTO 5580 5120 IF X0>0THEN 7020 5140 X8=X4 : IF X5=1THEN 5210 5170 C(8)=C(8)+1 : X6=2 : GOTO 5580 5210 IF X6=2THEN 5580 : X6=1 : GOTO 5580 5250 C(4)=C(4)+1 : C(9)=C(9)+X4 5280 X8=X4+1 : GOTO 5390 5310 X8=8 : GOTO 5390 5340 X8=INT(1.5+X4/2) : GOTO 5390 5370 X8=INT(2+X4/2) 5390 IF X5>1THEN 5500 : IF X3=8THEN 5520 : IF F$="A"THEN 5460 : GOTO 5520 5450 X8=8 5460 X7=0 : X6=3 : IF X5=1THEN 5550 5500 C(3)=C(3)+1 5520 X7,C(2)=C(2)+1 : X6=4 5550 C(1)=C(1)+1 : IF X0>0THEN 7020 5580 N1=N1+X8 : IF VAL(STR(X9$,G))=0THEN 5660 : C(5)=C(5)+1 : PRINT "D"; : IF X6<>1THEN 5660 : C(6)=C(6)+1 5660 BIN(X6$(H))=X6 : BIN(STR(X7$,G))=X7 : BIN(STR(X8$,G))=X8 : NEXT G : PRINT " " : E=27 : IF N1>64THEN 7020 : IF F$<>"A"THEN 5840 : IF INT(F/2+.5)<>1THEN 5840 : IF X6$(2)>HEX(00)THEN 5840 : BIN(X6$(2))=2 5840 FOR G=1TO L : IF X6$(G)<HEX(F0)THEN 5880 : H=G : GOTO 5930 5880 IF X3$(G)<HEX(02)THEN 5930 : IF X6$(G)=HEX(00)THEN 5930 : X6$(H)=HEX(FE) 5930 NEXT G : LOAD DC T#F(5),"SORT402A" 7018 DEFFN'31 : E=28 7020 LOAD DC T#F(5),"SORT490A"