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"