14.6. Příkaz SORT Příkaz SORT provádí setřídění logických vět vstupujících z jedné vstupní rutiny anebo z jednoho nebo více vstupních souborů, přičemž se nepředpokládá a nepožaduje, aby uvnitř každého z těchto souborů byly logické věty již setříděné. Formát: SORT jméno-třídicího-souboru { ON {ASCENDING | DESCENDING} KEY položka ... } ... { USING jméno-souboru ... | INPUT PROCEDURE IS procedura [THRU procedura] } { GIVING jméno-souboru ... | OUTPUT PROCEDURE IS procedura [THRU procedura] } Místo slova THRU lze psát i ekvivalentní slovo THROUGH. Za slovem SORT musí být uvedeno jméno některého třídicího souboru, definovaného pomocí klauzule SD. Během třídění se pak musí na tento třídicí soubor odvolávat všechny příkazy RELEASE a RETURN, jakož i příkazy pracující s 01 popsanými za SD a s jejich podřízenými položkami. Příkaz SORT pracuje následujícím způsobem: 1) Nejprve získá všechny logické věty buďto postupně ze všech vstupních souborů uvedených za USING (přičemž při více vstupních souborech uvedených za USING nejprve otevře první soubor, přečte všechny jeho logické věty a zavře jej, pak teprve otevře druhý soubor, přečte všechny jeho logické věty a zavře jej atd.) anebo od vstupní rutiny zadané klauzulí INPUT PROCEDURE. Získané logické věty předává systémovému třídicímu programu, který si je ukládá do svých pracovních polí a oblastí. 2) Pak systémový třídicí program provede vlastní třídění získaných logických vět; během této doby nedostává přeložený cobolský program vůbec řízení. 3) Pak příkaz SORT přebírá od systémového třídicího programu postupně všechny setříděné logické věty a zapisuje je do souborů uvedených za GIVING anebo je předává výstupní proceduře zadané klauzulí OUTPUT PROCEDURE. Všechny tyto akce se vykonají jediným provedením příkazu SORT. (Takže při třídění n logických vět se příkaz SORT resp. MERGE provede pouze jednou, zatímco příkaz RELEASE celkem n-krát a příkaz RETURN celkem (n+1)-krát.) Poznámka: V MX COBOLu je přípustné uvést v klauzuli USING posloupnost jmen souborů a vstupních rutin definovaných pomocí zápisů "PROCEDURE IS procedure [THRU procedura]", tedy např. "USING SOUB1 PROCEDURE P1 SOUB2 SOUB3 PROCEDURE P2ZAC THRU P2KON". Příkaz SORT pak postupně vyčerpá všechny zdroje uvedené v klauzuli USING v tom pořadí, v jakém jsou zde uvedeny a to při souboru dle pravidel z 14.4.A (otevře, přečte všechny věty a zavře) a při vstupní rutině dle pravidel z 14.4.B (odskočí na začátek, přejímá věty odesílané pomocí příkazů RELEASE, při dosažení konce vstupní rutiny ukončí zpracovávání tohoto zdroje). Tato možnost není zachycena ve formátu příkazu SORT vzhledem k její nekompatibilitě a vzhledem ke snaze zachovat tento formát čitelným.