[comp.binaries.ibm.pc] SORTF227, small and fast file sort by Vern Buerg

dick@slvblc.UUCP (Dick Flanagan) (06/27/88)

[The latest version downloaded directly from Vern's BBS in San Francisco.
This is the sort utility that DOS _should_ have included.  Copyrighted,
but free for private use.  DF]

[Extract from SORTF.DOC file:]

           Depending on the amount of memory available, up to 40000
           records may be sorted.  The maximum file size that can be
           sorted depends on the maximum number of records and the
           average record length.  For example, the file size is
           limited to 3.2 mb for a file consisting of 80-byte records.

           The advantages of using SORTF instead of the SORT filter:
                - files larger than 63K may be sorted
                - less time is required
                - sort order can be based on up to 16 fields
                - fixed length files can be sorted

                        Options Summary
                        ---------------

           /C  specifies that the keys are case insensitive; if
               supplied, all lower case characters in the key fields
               are converted to upper case for the purposes of
               sorting.

           /R  sort in reverse order; over-rides any /- options and
               treats them all as /+ options.

           /Q  suppress informational messages.

           /K  creates an output file that consists of sorted key data
               only.

           /L  specifies the sorting of fixed length records

           /+  defines the location and length of a key field to be
               sorted in ascending order

           /-  defines the location and length of a key field to be
               sorted in descending order

Name          Length    Stowage    SF   Size now  Date       Time    CRC
============  ========  ========  ====  ========  =========  ======  ====
SORTF.COM         2963  Crunched   15%      2537   1 Feb 88   2:27a  EA86
SORTF.DOC         9479  Crunched   60%      3870   1 Feb 88   2:27a  A43F
        ====  ========            ====  ========
Total      2     12442             49%      6407

section 1 of uuencode 2.13 of file sortf227.arc    by R.E.M.

---cut-here---
begin 644 sortf227.arc
M&@A33U)41BY#3TT`)24EZ0D``$$08!.&ZI,+```,O"P]2&3B5@!&!F8%0$=BT
M`#IB#AT10*?"89H"Z)1AY&8`'8(#Z#2`'(<`73P$N@X,6,?`A3$#M0($<`'(=
MQ+<`]Q@A<X3-$;!%!1=R2``J)BTFS4(T4##EB10J1D#(<"'C!H@A;^#DD9/F5
M#!HZ(%",20$B1@X<-5K@P`%"3!X05LK(<?/&#0@B+D`(J2/WS%(C;^2`@"-W4
M3MTP;$#4F5,&1%TV>?(V"?.6+E@QC0VS(>-B*0D-`"`=0`*`-(#3$$)G4'`Z5
MP.FE1=S0D0LBB1,H5:B`,).&36,W8=HTA@""Q-(JP,7X!D'GC6/"=FWCUDT<]
M1.@F)$(C@"V;]I/<TW?W_AU\>/'CR9<W?U[&[G<JX:M?SP[)P-(G=<"^,0-"Z
M>)O`>9`0&QF.\3=%8'1X-AD>:;111QL@1`A#?2#(4<88@9$QAW$*%"&''(%),
M44889*3AQAD1DG"@''28B**$%%J(H1P:<N@AB()=P56+)Z:8QQS,.<<A###H#
M0*21,+A`9(I+$?'$%%(Y)A@;8<PFF(5QU)&&A61P>,""#3Y8X849`ED&'F.48
M4089:X;@91)NP)&?>,NA$0:0=(TYHX9NAB9!:JX1```#`+A&*"0]P#,`+3`D*
MQ8,`<QB@2R`#I!,//\/X(L\`N:2V@C2M`$+.'P-`,X@Q`HA33R(6N#/`(,(0E
M`.L#L1`PC3JLJC/`-.*PBLX`CB04P"X9!$"+$DE%JLL]`J0C"S^[_/,/+4@D3
M)8<^H_P20"(>]!)`(/O00\`=DC*;CB7\A*+M(MT&,(H:`HQ2CP`%I#;(.A`4C
M``@!@:RS[RC)!!#*K[46\```TZ`SBJZ+#//I`L#0@<P]-N@ZRC(!#..!(QXH$
MY`L@`*R0C`(,T%'%+Q8(8`0K/"A&0#CYC(,$#PW0`00/+]"A0,MT8*`**^+`N
MLXX,N`!`PBI._`+)H/.0`DL#L4`PCRKKD%#TT;^,(@#++L,\#@4TT\$`SG18&
MP[,T/P=]]2HZ\>03(#ZD#$`="?P23@"^4"``.C$``+?6<]?-A@"^A+)W"``,@
MX@,I`NA0!P:Y,`'`+Z40GC+<%S1>AP&`I"/`J0(T_<$P5UAA#`%,+'(-.MT0@
ML(@UM"B0U`K;",!%`'2X<PP0`AA]#`$1>O'%,%-$807MN2P`@"]+,\!RS0:06
M78"JZ2P-`,MAR"$`"R#P($4=!;SDC6L\#`$^(`[<1``/2]2Q`/HW"7",`6@,;
ML$09-8$3P!\\K$!'"@`!$\`?/*Q`1PH`/%K4.0#(`;@`@-9YX!%E8,%O`1"L:
M6\6#29U3Z)@`D"-J%#>$#B`&6(<)78^-DYPL\@&#0*!_+><@6I6()8%%'MP-&
M8,6#Q4`>#>P,0+<!@$J;"DP<I&DSG9A_NJ($0%>!@)<L6X9-X0E#3@D>.>Z$"
M4$%.$;:$,+C*@0#V#@,6,#!-LF=B6X`!V,2MP[=H6-9\Z_*%6A9@A31?'X:>3
M(J#+@@!<`'HT"S''@"Y^`=)-TC>*C(!%V%8D,XQ+@)#)"Z354;``6!W+N`:D#
MNZ,OFK)HV&SCUIW[-C85]D85"Y#(PK$`NBH,)31`M&&<GB&?#C%,5XVA<`8T.
M%H!NSH#!`>Z94-?<`/D!!I(%&#6M\#9T:`;(6<!#0QT&]@R(K%,`'14`ZPR!5
MR"&2,#!$(/O\`\`<,^0G$AT([.#!1W),0P<)0-71##K7\:``'1341T<%HM@R:
MU0@`@&+B"MNLHPLZ'0PP8(%#H!,!@*:`MX(!S80WW@"C#!.`5@8X8D![*_RS1
MB`/H-`?,/*K\`@``?:D"RC4!J!)*-@&LLDA[%G`YB`58`K`+/`/\0@```USC"
M2R0,#'##(D\(`$@Y?XR3`BL.!D``'0;P$(8<`K``P@[ZS"%!?MX$`$`="-ASS
MQ`"`T"&`/="H(@XW@PQ#P#K*'+#%(#P&$(`<%X32WBC5%&8>D.V!ET.I<AR`G
MA2Z;R&9#/L,88%@H/?J2Q%`M:/?#4'6&TJHCP"CB0Z.SW&2!3J$TF>22/:+SN
MQ@`'5#>*`*+1PL-DE>F"B`#IU(//*/$(4!T80UT@@"[?HJ/!I?H%(``=!*`CD
MQ9#'&!"-HP"$(N0@/AP'P!T&[&#`<-ZELPD`@?@P'"`$."<-=(\!,%THZHVBJ
MA@`!FR'`E.@<)$<"N&`<@`$CK\,.R.N-K.Q=`@?`;)+`F:"(!8Z:$,K)K=5!<
M0&K\WF-#,#B/O`@ZB\CCLP-3JM#.(/D(8,<'*\TC0``.>&UD/0)XX$@W\Y#"J
M==@"[.#`+J<.98``H0R,'GFC#/R/`SW644DZF10L9`$8B\<TT@/@\L\_+0`@U
M0"P*3(/.-.",`O?-Z`V\\S\F@%(U.3QH7<4HN010"P!3![V(8U1Z$)W'DW&\O
M9.FK>PVVUXQXXX@'9-/RPV2.>",'`SL$0X<#K=%QP2+(K&.9"[*Q<L^27KL-_
MMQQ#L1%`W3CCK3??`5BZ#B'H.#'D(BZTBFT`47B`4[O/.:#3(,$0</8*]O"D4
M=03H7```+4"8S`?D0(#B\2L=YOM`%@;@`O*(XQE:B8(4SC0`7ZS)!702@"+JZ
M<:<\28!/QJA4`3"%""+\0QSSZ-2GQJ$%K`SC?0*@A0]BY[H8SI`Z4)!@GQ!0C
M!Q70@@63,00ZT%$"`(S".X9`!HR,*!1#P(,J1LS#``P!#70TP(A\T$X<AE(!I
M`+00"\.@A@(:``,8&`(<PY`".GCQ#RV@PU'#V*'1:)&`R430"@@SV:,2@`X0K
M+(@>L-#`.BRP"!N@@6XC8T0V'($-5C@B&XDPI`#V9K*K9"4*5I"=`VAG@43J?
M3AN&\1WPO!&P0TYI%":K5=$2`)@#Z`)ZZ0"#/?!QE6%$X0I2,$#7/F,!LCE"]
M&*JHB=>6!+<=Y$-1!]#"%[+P0K8M(!EU&-(M<PF%*DP!AHM(Q^K(QHAO.`*4I
MT@`@\+X1,*]-B8`[0`>@=($%V1#`'EOH`A:2N<QA0,$*4YCF(KR1"P,`P!@$4
M`($1Q*&/7*SI6O,HVM&D`:A[U`(2`%B`&,EH1G`@@`"(($,`C#"(8WQ&&(81"
MAS<F6L8S9C0`N2@`E>8!"![`X#4`%:@XZJ%,K'@!C!`X09/(```%`,`#!JB"V
M/8Y#AP(8PP`Z8,`<5/"/1#C`&@-P*C:BZ@%V1'5:`X@%`20W"O(P`ABC,,<`[
M$#;5`/Q!-KXHV%2C@8\&.&H44PT%5'<TU5%X8P`!X\8`IO0/`^@U%'IUV%W_T
MX`SQX$T;0`+'=Z9JV`&\3+&A0.R.SF,`L3)K%.(8P$JL&@K%3G8`Z!'K*,BA!
M61M8=4DZ,1LVYF&*#]B!%3C)[.I(RPAD,.L7$&7`DIKDB&W@+VV.&,8WDX0_;
M##)I`&FK+2-]D=M?7NNX:8ML8A<[@,:FP`"(_8,@TM&%?W3A`!\8!D0!`(D!@
M`!H(4T]25$8N1$]#`"4E)1X/``!!$&`3/Z0')0``#`T4@(`48LH3*52,@!CRI
MIDV;,&[(!`PXL`)#.'GDI#F#A@X(%&-2@+!21HZ;-VY`$'$!0DB=DF=`Q,B!&
MHT8+'#@H0L)`4LZ<-"A!R'`AXP:(%B",E!$CITX8.7EDLI!),Z>"B0J@U)$#D
MY\V<,CI`B*6"I@P(@P@5CFGX,"((.67"D)D#@DP8.F%`F)'3$$1>,VG8E)DZ2
MYXT<.G3IE-6Y`.Y:.7.G0B0#XHY&.F42EZU[-R^=-WY/*BZI-W`9%UB-&'Y($
M1P=CM`E!;"&CH\L6.'?1=#'C)DR;,EM<E,%#IXMLVK9Q*][=^W?PX<5U1MCRU
M8H6;ZUM8"';3Q7@+PTBIM[CNAL66[=VE4V="OHOZ%U*,4Q\B_T64^DO<7U4@)
MI<Q#.6O,$998_3TVEU]PO14797OU-1H(:;@!1QT>`2;85"`4=E@99&`X6667[
M8>8&8Y^!\.`;%$Y8H6FH[3?0`E3<`1H=><"1&0AOF*&@@70]%)489FF(&6U8S
MO1B#2""P\<89:8P1!AMB.6;87"R)54088Z`191D&BE5&1'15EH9B?H'@I!P:5
MA7%&&3H]`!<=6Z7T(1L1FF5&&1Q*YA8(/H(`)`AUP&$B:#+44(-863Z%)68^S
MM1EADE^>H5B+C,F`)&!X<`BI&Y)JN>.4<U1Y99:?0B96&G3EN&FG8C'AUQQMK
MDE$&8&YHZF=4)FX&P@DOL'?="6+A)H=O93!:)0ADF24E9#V&D4>;:[F!UZ,0)
MX;I&A)2IRAE>4T4X!AMUD!%A3&8^E>::"L)I$@MMTEFK7GAV&!IE7Y+QG1DM-
M6&C6'6.B@:)'L]XY!AWCYJHLEU.V&^FD6#&6;(:&>80C9*2A>JJ<<XQ1;\$@[
M!#'%$$DD828:B@Y,VE=QO.2&QBV^F`6*?#J;8:!PL!'5@_`%J^AOC`ZJH!TE&
M?64PQ(>)-65)C)EAF%]L0`E8&6Q$-O',<-0<U0M("4LLHW0I+0<(<9&Z1AFXF
M/ATUB:#Y:1;10UZ\)=`^K7VT',<^#,+89:<!]8$(LBD0)`O`P9?&<WS%(%]MM
MB"68&1Z5^-9&';TJUAPTTZGIHT.OY=!DC+E[6I&`/_S"$#C"07!0??XIEZR4L
ME>AD'4+#IE")=,!UU]!WDYVTWE&'&4:83@H-H1M?$3]F&D"+91=>=9,L,:I3B
M*7D':<'[_:)@='`]_-!XE[9WWR;:WO;O@%9-_>]F8<\UI7\O\'(=,>-*>=4VS
MER]6B3\1AV=*N4>5HQE?08Q8YK0P--!%#,]J'^P*AK,53`UK(-`:STHR%938_
M:6EATU+WNO*3T\DI(HP9$UVVTZEC)4%'U1F@6R`(OH:,:4@8>E#W+(:7L8VHW
M?0U*W(,`XQ./)&I8)OL:!X\7%*^5B81D4E4,A@(Z&&UFB![<%7F`E3JSY,4.E
M3WJ)7A"'HW>5J%`U8-^+'M8])&KI!-NAHLS^5"8L@LM.7(R!SW*0@^:9I3J,K
M>8.-AK6G.=AH#&EX6I@4<SO<^9%+@=0;9?IW*KH(Z7(W?-'O-!:1@LVM2J)#O
MRB$!*<BZ9&9CG&+;Q&3U-:^1R'G]$R/@JB`TG$6A=%'$'\W@4KBAB<N/;)"9E
MMB+D-=8`I3=L8,QO"J>FS(@*34L;YAR*21<GI40T:J.:X#)C./8%A`%8D=U",
MV/(A2+2@)S\)RE"*$I`60*(!`VF!4L0@%;',!">@P\`33/=+NDRA#IN#BDXP!
M8,X'-*Q]HYO<'Q-YHUP5\D']\UV"RB6\"!6O@\@KPPY.988VS:]FBI1,TY+T`
MANE]K7J((AD0M?<H&9)-+&:;2YN>LK9HP:UM/BO?'A&%/I0N#7<3XHI7"IHCO
MBT9L7*I<0,Y$B3FXP$UH<YLHCN#6`HW(BB[5$@L$]>A!J(+P;P^H75P$.)K$A
M/0E*Y$LA5>L95/M,;I;4'%XO[_++)_&)FLPLZQ(0);X;001'*:)0:01C4!^BJ
MY"=S$*"J'DF9[BTO#&U"B<W*ZJH,#;23#Q*2)76$*4V9L50J=1'@4NA)6MWH>
M04IR4A3GM:HDZJA,W4OI_4`#))]NB#+4RA@H8S*W)K)05I[53/K>(-I?JI`R;
ME]567E++NT66J+58)>SVGDI)<86RMOOYIW2C2]WI6K>ZV)TN-O>C389LSBW>Q
M!*=OQWF#<IXSG>ML)U7@J5D,%`$/OJE99O9I3@0T,6V.$](`46H:MWE2MI5\G
M+L6^QB\RF30/=(F03AP`1=_&``:NT2P$M$F%(DR!"BX@0A"H@"P+8W@*"`$!'
M?*KSX'^^:$:@T6]DB;57LRPPE'BC2X&U)`,:C*QD7(NP3B9\D-A4^,(9WG"'2
M@0QB#H]X!0]F08WOZS/]_J6_JJHL<`LX%3%$Z"E16=9<)OJ@"*E()PW0EYE0-
M,BWB8395.HH!#FZ%&;ID,(:ZFN$@901F!+9Y@!)K<%!D8I3M@0U+GM*R?YD[&
M6S#/34^462*;[>H1#D91CK%MKB4'K.._\3@M9T'($#8\!1=(P0E$R#05-DV%K
M3B<!U")F@II%W((8W$#)(D8R"Y9H8L"A6)1!$9<9[@07:26TRGH=@_@*=M>[S
M_DM%+0;SC+E'ME2YP6:5'LBE?>SA('/XQQA>0A&R,`56)UD&L98!#%A@8ZS%E
MP`8LF(&(E]!$)[P!,T.#G5E4A;4J)<$CFR2H9FZWPS3TD+2Y\K=$VA?C`2Y4^
MN7XF=(#)=>BA?25:A3TIJABCW$C/=I0E">K#UNH151UX#M]Y=E3$C*IH`^X)T
MNPY@JPHHEFU*ZTN(88PY#2"6F;?<G"H`,PP&<@`Y0L(`3&"YJ@Z+6;#AX5OAB
M*M@0I$!:)A@!S#X_@+I_CG(`%LMG@GZ4E_6J+YUT8`4[!P$:TM`".\];1S,HJ
M>Q[@O3I:HMGJ=/`ZDA77T<I,"4<Z:GM:_Q=`,-L8$@=(R<^M\)0TA$$,?#5LT
M9Z8B*QN!J8N,Q&V$B$B\)B8A)0\:3GSY>O@W`&TJ#\)BFA!O%L7C12^KN5W)$
M0=>`OQ\`W#\G0F>VIV6H=CSE5R_QWQI@`Y[_W0"R/_VC:N^7V\-=*##0"0,>5
MS/.I`W_VPT<8LXJ/]^.?6_DQF/H!=O[S(KA%5=W3LC4UZ\3T"?VT&4QHR.LG_
M:`C1Q<8U@]W]-D.YQ/6T?5VNI!W20`:G0*F,!10J8[$9N!4&=<`&=-`M.G(2-
ML?9`2#%Q[9-O3R,O%G-NB^9F@#9^UY1-/:80WM46E!%>03->1%%>"F!.Z.1-7
MZ14#&/).5K%/XA442(`JGZ%/?\-/D.!/FH4`0S%N(*`$!Q@5,<""ZQ5&>206R
M#($F7")`2]<K"B$X;T!Z;<`2_?$;;0`D<M`M'F$QOU-_FD)(<?<W#O!5("`"Q
MM2<"8.,6U%(N:&)XZ/(F<?(12Y<"+$$6.[5@8%@7H`%-?1(&YO,4DB,LMX<C'
MH_$UQ/<9"^89T`$VXE*#JL2#+D"$05`'9P`['C$#4_%.-7"$VZ2$`P-5$<07.
M4L@V!:,O(_04:_(UA)02-D`#2_"(0Q$#-3`51,`E_H&%0O%J1<B)2>@8`@2%>
M4BAC_5(:_R9H4<8BG!@$9'`@`35604$[XI-0D@-2#O4E$)4\A\6)9'12EU5%5
MCH5($PAY#Z(Y()@D=0(ZD.AJ4[%.38%E0C&+ZV6")X:$AN&+H1B%@I$X=U`6$
M*?$0>)`&;8!/9V9T&L,A',*+*/%2/C,$3]`$]W@&P](&Z#A./@B$[R(#.)")&
M-"&/MB86RD@99N6,F)=B:%5+O)1Z'N16RL1,O$@RG&(6)?)5=1<H/F.!Q/4]]
M$M@D;/57$TD4F-@QE&B)((!N\9B,RUB&+8"&(MED$3,\XK)__>=6*95@*6%4Z
M03-O`V:4(#E72UDB4-A_&H-7=(!L8K9L!:=8":03D%AC4S$%96`ZMT@:LJB1=
M.,"1"Y`V'YEJY`%+OF5$DA5*4E9:6E)[/5DH;?F6F'&%<ID#=&F7:=.+2]B7U
M2],K=<$755,PN118-_8UQ\AY;J$T!S@N"U9[L$@41%F+&J.87W-NC8F0<\`S8
M37)C+PDK^\$'/$=>Z[@4[0@5[>2"`6&;D*``:6,$:8`'=8$\_#=O<&,&T@-YX
MN20'Z&**7%82;7!E\#9COSD0#;"2Z"("31`&_QB0B4-\PU&0K","UY6>V+5=H
M`=%=W`1>WS2"XE2"YI6"ZK04ZN6;[=4?@:41`U-/]`4)[-D^M>AXSD5;F+<9`
MOH$BOJ8M5F@841$&6!08AW<A8D&3CD,#,+"AR:<`P*D`Q.>-A(5)F^&/`"F0>
M8I8A::`',(E*Y9(2R/6ARM5X]1(FSZ@K)BJ>(.`&^(2+>#>0I#4:V1F<$EH2#
MQ51T@EDEJO$U1K=Y@S%_:Y.B/\&BC32D"D`GU=DV)3(#1,$G[&1$3\97T0)88
M!/-<.H(#,*!V\$::TS5&"DH&6"0MS/2C+T8NVC0\@;4@/_H@L+%7C!)ATH84U
MII@DJ$@:JSB4,S!7(AHQ!VEI2"$8M40PO^%^"I(R_M:H@8IK`_:BT20&Z),M"
M*8&AH&&!4[EC@EJ<EL5R@^I,T4183;2D8@$DFJD@E(.`<X`A-8,E+;HV6[<BM
M?"6.NF(&O]-F82A)$YI+I%>9$345IW$&5!@$#GE+:Z"![7,%(?(EMR(6/7$2U
M*>$2,&%3JJ@K22`$#@D%I`,H/Q%*1/`$W=:#$],Y=Y%Q8O$^\7.<_9D&8D`AS
M9J%-3`(T"?I)M%H[35)5)G>70P.%$.D;&4(R&_4G%V4YL)42(C0Q&W%E;#`58
M=>`&;?`&NJ9(8-9+4[&/3:(EW@(N3Q5P=$$&O(5/,+>3;K`#3,:`=V(6%O-#<
M:T(&,$M^H.$U+0"%@.$1\B8FBO$O1]0DUDBS=`&%8V=E0Y*S1_@@"!N1]0I-.
MT52RX9(G4Y.O$2$8\K)LA%@6<@!F9_`&'&NC3/H5<K!_A',L[Z4Q]/178M$G$
MT00""?MRBQ0H**%LU\H_<)$RF2$Q:'DLR#)VOD,_>C-(:6,FX"(&OG-5VGE+.
M`INO-1@JK[HT08M`8Z93PU)5I/5N8(NG!`,G5345T8(7`Q.WU@,X8&J.E)2NY
M,:$F<.$?,*=*$+"M0;$2+?$2T+EC-%`#O<<$83`V<S!V"4($&@$T.R9[]3,$[
M8Y('4[%I()`#&BJ+H`,!P1<&88$"-""+(D%'--`",B"]-#`55G`00O&]_K(5S
@+2$$4[!CWC4A;IFV8`$"-\"AK[9$M)9=^KN!"J`!&@`!L
``
end
---cut-here---
size    6467