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