ü=0 èŠ A-Zò­ – œ °ÿü… É,Ê,Ë,Ø,Ù,Ô,Ò,Ó,T±,SKIPPARSÅ,FÔ,SEARCÈ, Ã,Î,NÃ,P¶,P·,P¸,P¹,PÉ,Ó,Ô,T±,T²,Ã(),Â(),Î(), SEARCHWORÄ(),SEARCHFIELÄ(),SKIPWORÄ(),LOOKFIELÄ(),DÄ(),Æ,FÔ;NËì� Ó(NÃ,) ¶field #, num?, length, pad?ÙìT²òT±ñ$� Ä(Ù).Øìÿ(ÿ(Ù)ôÿ())48� LSÔ(Ø),HSÔ(Ø) ¶lo and hi stacks&B¶ ENTER HERE TO RE-SPECIFY L› ªRVÄ()ì""• Ä� Ä(T²òT±ñ) ¶ do here for recycle (erased below) `³"SORT %e¶ by Dan Dugan -- public domainOj³³"Arranges a selected set of records in numerical or alphabetical order.Ht³"To quit this activity, enter 'x' in response to a 'y/n' question.#~� T±ì ÷ T²ìÎ â œ °Pˆ³³"Shall the output include the records outside the range sorted? (n/y) ";)’Áìÿv() � Áìÿ( ) â Áì"n"!œ³ Á � Áì"y" â S¹ì¦� Áì"x" â H °³Mº³"Please define the key fields for sorting in '"Æ".' The fields are:ij › ^ ¶ showPγ"The file will be re-arranged according to the contents of the key fields.Lس"Enter the primary key field number first, then any others you wish to(â³"be sorted within that order, etc.VìS¶ìKLEÎìKLENFLAÇì ¶ any alph field will change S6 to 0; key lengthö³™ Éì ã NÃT ³ É;". "; ž"Enter field number of key field (0 when done) ";Ó(É,)  � Ó(É,)ì â Œ] � Ó(É,)î û Ó(É,)ëNà ⠳"Field"Ó(É,)"??? Enter again." œ O Ó(É,)ì� ÿ|(Î(Ó(É,)),)ì"n" â Ó(É,)ì ’ S¶ì.( ¶(if just one is alpha, do alpha sort)K2 ž"Number of characters in field to use (RETURN for all)";Ó(É,)!4 � Ó(É,) â 6 ’ <x6 Ó(É,)ì³"Do you want to pad shorter fields to that length? (n/y) "; Áìÿv()� Áìÿ( ) â Áì"n"(7 ³ Á� Áì"y" â Ó(É,)ìQ< � Ó(É,) â F ’ ³"You want to sort on all characters of "; œ PCF ³"You want to sort on the first"Ó(É,)"characters of ";RP ³ ÿx(Î(Ó(É,)),)"? (y/n) "; Áìÿv()� Áìÿ( ) â Áì"y"Z ³ Á� Áì"x" â H Fd � Áï"y" â ³"Entry cancelled; ready for key"É"again."œ Wn � Ó(É,) â KLEÎìKLEÎñÓ(É,) ’ KLEÎìKLEÎñ KLENFLAÇìx ³ ‚« ÉŒNËìÉò–� Ó(,)ì â H ¶quit" ³³"Ascending order? (y/n) ";)ªÁìÿv() � Áìÿ( ) â Áì"y"!´³ Á � Áì"n" â S¸ì¾� Áì"x" â H ȶ OUTPUT SWITCH (P7) ÒP·ìJܳ³"Shall the product of the sort overlay the original file? (y/n) ";)æÁìÿv() � Áìÿ( ) â Áì"y"ð³ Á� Áì"x" â H ú� Áì"n" â P·ìœ @� Áï"y" â ܶ YES, OVERLAY -� (T±ì ÷ T²ìÎ) û S¹ì â ^I"³³"NOT ALLOWED - Overlaying part of file on file will erase records",³"outside of range." ³œ È6¶ NAME OUTPUT FILE @@³ž"Name of sort product file (no prefix or suffix) ";F²J� F²ì"" â È'TØìF²› PF²ìÙ ¶ ucv^¶ SHOW SORT SET-UP h› ª ¶csr³"SETUP FOR SORTD|³ � T±ì ÷ T²ìÎ â ³"Sort all records ("Î")" œ ®4†³"Sorting range of records from"T±"to"T²"�­ S¹ñ œ š,¤=š ³"The output will be the range of records only." œ ®J¤ ³"The output will be the entire file with the selected range sorted.]®³³"Records will be put in order by examining" ³"the contents of the sort key fields."¸³™ Éì ã NË> ³ á();³ ä"##";É; ³". "ÿx(Î(Ó(É,)),);9Ì ³ á(();� Ó(É,) â ³ Ó(É,) ’ ³" all" Ö« É!à³� KLENFLAÇ â â ’ æYâ³"ESTIMATED string space needed for the key array is"KLEÎó(T²òT±ñ) œ èGæ³"String space needed for the key array is"KLEÎó(T²òT±ñ),è³"and the available space is"ÿ(Ø)".\ê³"This program can't tell whether there is enough space on disk " DÄ()" for tempo-%ô³"rary storage of the key array.)þ³³"The records will be sorted in ";&� S¸ì â ³"ascending "; œ ³"descending ";)� S¶ì â ³"alphabetical "; œ 0&³"numerical ";0³"order."(:³ ³"The output of the sort will ";4D� P·ì â ³"overlay the original file."œ X:N³"create a new DIMS file "F²" on disk "DÄ()"."lX³� P·ì ÷ (T±ï û T²ïÎ) ÷ S¹ì â ³"You are aware that this process will erase records?]� P· â b ’ lCb³"The new file "F²" will replace the safety copy of "Æ".=d³"You must then use PIP to move "F²" to another disk,Bf³"and use the DEDIT 'backup' command on "Æ" to re-create ah³"safety copy.l¶ FINAL APPROVAL 0v³³"Is this exactly what you want? (y/n) ";)€Áìÿv() � Áìÿ( ) â Áì"y" г Á”� Áì"x" â H %ž� Áì"n" â ³"Try again."œ B¨� Áï"y" â œ v ²œ >!¼¶ SORT CONTROLS GUIDE Gƶ S() array holds key orders (field#, num? (1=num), length, pad?)%ж NK = number of keys specifiedÚ¶ S6 = 0 alpha sortä¶ 1 numeric sort%î¶ S7 = 0 don't rename dupe file(ø¶ 1 rename dupe file as F2$.D¶ S8 = 0 ascending order ¶ 1 descending order2¶ S9 = 0 output only sorted range of records: ¶ 1 output records above and below sorted range *¶ P7 = 0 overlay main file#4¶ 1 output to named file#>¶ PUT KEYS IN TEMP FILE H› ªR³"SORTING '"Æ"'\³³"Extracting keys."³ f¯ "O",,DÄ()ñ"KEYS.$$$"p™ ÉìT± ã T²z › ®›  ¶ get recordF„ � ÿ(Ô)ì â Øìÿ(~)ñ"(del)"œ  ¶ sorts deletes to endŽ › Ô ¶ parse ˜ Øì""¢ ™ Øì ã NËA¬ � Ó(Ø,) â ¶ ’ ØìØñÂ(Ó(Ø,))œ è/¶ Úìÿx(Â(Ó(Ø,)),Ó(Ø,))À Ùìÿ(Ú)zÊ � Ó(Ø,)ì â Ùìÿ(Ó(Ø,)òÙ,ÿ(0)) ØìØñÙñÚœ è ¶pad num field with left 0's,Ì � Ó(Ø,) â Ô ’ Ùì""œ Þ>Ô Ùìÿ(Ó(Ø,)òÙ,ÿ( )) ¶spaces to pad rightÞ ØìØñÚñÙè «=ò � Øì"" â Øìÿ(~)œ  ¶ makes empties go laterü � S¶ â   › PØìÙ ¶ucv ³ É,Ø  ´,Ø$ «. „ &8 ¶ LOAD INDEX AND KEY ARRAYS B ³³"Loading key array:"³ L ¯ "I",,DÄ()ñ"KEYS.$$$"$V ÉìT±ÊìÄ()ìÿ()` � ÿ () â ’ j ¢ Ÿ,Ä(Ê)t Ä(Ê)ìÉ~ ÉìÉñÊìÊñ ˆ œ ` ’ „ œ   DÄ()ñ"KEYS.$$$"!¦ ¶ READY TO SORT ARRAY ° ³³"Sorting array."³3º ¶ from QUICKSORT by Sylvan Rubin DDJ #33 p.42$Ä LNÄìHNÄìÊòSTÐìÎ ¶ PARTITION Ø › ® ¶exit'â � LNÄíHNÄ â ^ ¶ pop stackEì ³ ÿ(P);CTÒìÿ((LNÄñHNÄñ)ô) ¶ use center for pivot<ö Å Ä(CTÒ),Ä(HNÄ)Å Ä(CTÒ),Ä(HNÄ) LÏìLNÄòHÉìHNÄ( PIÖìÄ(HNÄ)œ ( ¶ scan-l ¶ EXCHANGE 8 Å Ä(LÏ),Ä(HÉ)Å Ä(LÏ),Ä(HÉ)( ¶ SCAN-L 32 LÏìLÏñ­ S¶ñ œ < ,F ¶ alph, num%< ­ S¸ñ œ P ,Z ¶ asc, descF ­ S¸ñ œ d ,n &P � Ä(LÏ)îPIÖ â 2 ’ x &Z � Ä(LÏ)ëPIÖ â 2 ’ x .d � ÿ&(Ä(LÏ))îÿ&(PIÖ) â 2 ’ x .n � ÿ&(Ä(LÏ))ëÿ&(PIÖ) â 2 ’ x x ¶ SCAN-H &‚ HÉìHÉò­ S¶ñ œ Œ ,– Œ ­ S¸ñ œ   ,ª – ­ S¸ñ œ ´ ,¾ &  � Ä(HÉ)ëPIÖ â ‚ ’ È &ª � Ä(HÉ)îPIÖ â ‚ ’ È .´ � ÿ&(Ä(HÉ))ëÿ&(PIÖ) â ‚ ’ È .¾ � ÿ&(Ä(HÉ))îÿ&(PIÖ) â ‚ ’ È È � LÏðHÉ â  Ò ¶ SWAP PIVOT :Ü Å Ä(LÏ),Ä(HNÄ)Å Ä(LÏ),Ä(HNÄ)æ ¶ PUSH STACK 9ð � (HÉñòLNÄ)ë(HNÄòLÏ) â , ¶ stack lowú ¶ STACK HIGH  � LÏñëHNÄ â  A STÐìSTÐñLSÔ(STÐ)ìLÏñHSÔ(STÐ)ìHNÄ ¶ SHIFT HIGHEND $" HNÄìHÉœ Î ¶ partition, ¶ STACK LOW +6 � LNÄñëHÉ â T ¶ shift lowend?@ STÐìSTÐñLSÔ(STÐ)ìLNÄHSÔ(STÐ)ìHÉJ ¶ SHIFT LOWEND &T LNÄìLÏñœ Î ¶ partition^ ¶ POP STACK h � STÐì â † ¶ done0r LNÄìLSÔ(STÐ)HNÄìHSÔ(STÐ)'| STÐìSTÐòœ Î ¶ partition† ³³³"Array sorted.� ¶ OUTPUT 8š NÒì ¶ counts number of records in product file*¤ „   DÄ()ñÆñ".DD"ñFÔ› ð® � S¹ì œ ô !¸ ¶ COPY BLOCK BELOW T1  � T±ì â ô (Ì ³³"Outputting records below range.Ö ™ Éì ã T±òà › f ¶output recordê «*ô ¶ MOVE RECORDS PER INDEX ARRAY _þ ³³"Now moving records from " DÄ()" to "DÄ()" in sorted order per index array."³! • Ä ¶ don't need strings ™ Êì ã T²òT±ñ ÉìÄ(Ê)› f & «0 ¶ COPY BLOCK ABOVE 4: � S¹ì û T²ìÎ â l ¶ skip block copy'D ³³"Outputting records above rangeN ™ ÉìT²ñ ã ÎX › f ¶ outputb «&l ¶ SAVE HEADER AND TIDY UP %v ³³"Saving header;"NÒ"records € Ôì"" Š Éì” ÉìÉñ!ž ÔìÔñÎ(É)ñÿ(~)%¨ � ÿx(Î(É),)ì"stop" â ¼ ² œ ” ,¼ ÔìÔñÿ"(NÒ)ñÿ(~) ¶ NR at endÆ NÒì ¶ for headerÐ › Ž ¶ put it Ú ³"!"#ä � P· â  ¶rename productî › $ ¶ copy dupe to main ø œ 4  ¶ RENAME OUTPUT FILE F „ ª DÄ()ñÆñ".DD"ñFÔ Ú DÄ()ñF²ñ".D"ñFÔ› ðF ³"Product file "F²" is now on disk "DÄ()" (backup erased).J ³"After moving product to desired disk, use 'backup' command on "ÆA* ž"to restore safety copy. Hit RETURN to continue. ";Á4 ³³³"Sort completed> ³ ÿ(); ¶beepH ¶ RETURN TO DEDIT R ³³"Re-loading DEDIT.\ ‚ DÄ()ñ"DEDIT",è'f ¶ (SUB) OUTPUT RECORD "I" p › ³ Ô ¶ get rec Iz › ® ¶ exit-„ NÒìNÒñ ¶ # records in prod. fileŽ ¶ PUT RECORD NR ˜ ­ FÔ œ ¶ ,¢ ¢ § Óì©(Ô,�)¬ µ #,FÔóNÒñ¶ § Óìÿx(Ô,€)À µ #,FÔóNÒñÊ À"Ô ¶ (SUB) PARSE STRING Þ Ëì&è Êìÿw(Ô,ÿ(~)) ¶ delimiterò � Êì â Àü ËìËñ Â(Ë)ì©(Ô,,Êò)Ôì©(Ô,Êñ) œ è =$¶ (SUB) ERASE ORIGINAL FILE AND COPY DUP TO ORIG .„8³B  DÄ()ñÆñ".D"ñFÔ1L³"Copying dupe, overlaying original file."³V› È ¶ open both files`™ Êì ã FÔó(Îñ)j š #,Ê t ³"&";~ § ÒìÓˆ µ #,Ê ’ ³"*"; œ« ʦÀ°¶ ERROR HANDLING º� Ýì= â ¾ Ä ’ âDÄ ³"Sorry - process halted because there isn't enough disk spaceÎ ³"for the key file.CØ ž"Hit return to recover.";Á„Ôì‚ DÄ()ñ"DIMS",è â� Ýì û Ýì â ¾ ì ’  Cì ³"Sorry - process halted because key array needed more memoryFö ³"than is available. Try again with shorter key specifications., ž"Hit return to try again.";Áœ B � Ýì: â ¾  ’ F2 ³"Sorry - file named "F²" already exists.< ž"Enter another name for the output file here: ";Ø( � Øì"" â 2 › PF²ìÙ ¶ucv < œ  F®P¶ (SUB) UCV ZÙì""d™ Êì ã ÿ(Ø)n ÙìÙñ" "x Øìÿ(©(Ø,Ê,))=‚ � `îØ ÷ Øî{ â ©(Ù,Ê,)ìÿ(Øò ) œ –#Œ ©(Ù,Ê,)ì©(Ø,Ê,)–« À+ª¶ (SUB) CLEAR SCREEN(TERM DEP) ´³ ÿ( )¾À!ȶ (SUB) OPEN UP FILES Ò„$ܯ"R",,DÄ()ñÆñ".D"ñFÔæ— #,€ Ú Ò%ð¯"R",,DÄ()ñÆñ".DD"ñFÔú— #,€ Ú ÓÀ)¶ (SUB) GET RECORD "I" IN T$ Ôì"""­ FÔ œ @,,&, š #,FÔóÉñ ¶ latter half6 Ôìÿx(Ò,)@ š #,FÔóÉñJ ÔìÒñÔTÀ ^¶ (SUB) SHOW FIELDS h™ Êì ã NÃr � Ã(Ê)ì â �| ³ á();>† ³ ä"##";Ê;³". "ÿx(Î(Ê),)" "ÿ|(Î(Ê),)�«š³¤À®¶ (SUB) EXIT TEST ¸Øìÿuº� Øïÿ() â À.³³"Process paused by EXIT from keyboard..̳"Do you want to continue (y,n or x) ? ";(ÖÁìÿv()� Áìÿ( ) â Áì"y""à³ Á� Áì"x" â „ œ H ê� Áï"y" â „ œ BôÀe (y,n or x) ? ";(ÖÁìÿv()� Áìÿ( ) â Áì"y""à