13.7. Deklarativní sekce pro Generátor sestav Formát: USE BEFORE REPORTING jméno-skupiny ... . Pravidla: 1) V deklarativní části PROCEDURE DIVISION (viz 5.5.) smí uživatel popsat pro každou skupinu sestavy (01) nejvýše jednu deklarativní sekci, v níž může provádět libovolné akce, které nemůže nebo nechce provést prostřednictvím Generátoru sestav. 2) V klauzuli USE BEFORE REPORTING lze uvést i několik skupin sestavy (01), které mohou patřit i do různých sestav. Popsaná deklarativní sekce je pak pro ně všechny společná. 3) Deklarativní sekce je vyvolána vždy bezprostředně předtím, než má dojít k posuvu papíru pro první řádek skupiny (podrobnější informace jsou uvedeny v popisu příkazu GENERATE). Jedná-li se o "netiskovou" skupinu sestavy, která nemá v popisu uvedenu žádnou klauzuli LINE a nezpůsobí tedy žádný tisk ani žádný posuv papíru, deklarativní sekce se vyvolá stejně jako u obvyklé "tiskové" skupiny, to jest na začátku jejího vytváření. 4) Podrobné informace o hodnotách řídicích polože a sumátorů platných při vstupu do deklarativní sekce lze najít v popisu příkazu GENERATE. Nejdůležitější informací je, že při vstupu do deklarativní sekce pro skupinu typu CONTROL FOOTING jsou vráceny staré hodnoty řídicích položek (platné před touto řídicí změnou), zatímco při vstupu do deklarativní sekce pro skupinu typu CONTROL HEADING nebo typu DETAIL jsou již opět obnoveny nové hodnoty řídicích položek (platné po této řídicí změně, tzn. na začátku provádění tohoto příkazu GENERATE). 5) Hodnota položky LINE-COUNTER při vstupu do deklarativní sekce je vždy taková, jaká se nastavila při vytváření předcházející skupiny sestavy (neboť deklarativní sekce se vyvolává přede všemi posuvy papíru způsobenými klauzulemi LINE a NEXT GROUP a před odpovídajícími změnami položky LINE-COUNTER). Bude tedy rovna pořadovému číslu posledního vytisknutého nebo (v případě, že předcházející vytvářená skupina měla uvedenu klauzuli NEXT GROUP) nastaveného řádku. Výjimka nastává v případě, že předcházející vytvářená skupina měla uvedenu klauzuli NEXT GROUP NEXT PAGE a dále u deklarativních sekcí pro skupiny REPORT HEADING a PAGE HEADING (kromě skupiny PH umístěné na první stránce za skupinou RH), při vstupu do nichž je vždy LINE-COUNTER = 0. 6) Během činnosti deklarativní sekce nesmí uživatel provádět příkazy INITIATE, GENERATE a TERMINATE (ani pro jinou sestavu) a nesmí měnit hodnoty řídicích položek; učiní-li tak, je další průběh výpočtu nedefinován. Obdobně uživatel sám zodpovídá za změnu resp. zničení formátu logické stránky, změní-li v deklarativní sekci (anebo i mimo ni) hodnotu položky LINE-COUNTER (srv. 13.2.2.). Naproti tomu uživatel smí v deklarativní sekci i mimo ni měnit hodnoty sumátorů a položek PAGE-COUNTER, PRINT-SWITCH a CBL-CTR. 7) Činnost deklarativní sekce musí uživatel ukončit příchodem na návratový můstek vygenerovaný na jejím konci, což způsobuje návrat do Generátoru sestav (viz 5.5.). 8) Pokud uživatel během činnosti deklarativní sekce uloží do položky PRINT-SWITCH hodnotu 1 (např. příkazem "MOVE 1 TO PRINT-SWITCH" nebo příkazem SUPPRESS PRINTING), bude vytvoření připravené skupiny sestavy potlačeno, tj. potlačí se tisk skupiny a dále všechny posuvy papíru a změny položky LINE-COUNTER odpovídající klauzulím LINE a NEXT GROUP uvedeným v popisu této skupiny (podrobněji viz popis příkazu GENERATE). Vytvoření skupiny se potlačí jen pro tento příkaz GENERATE resp. TERMINATE, potlačení se nepřenáší do dalších příkazů GENERATE resp. TERMINATE. Teoreticky by uživatel mohl uložit hodnotu 1 do položky PRINT-SWITCH i dříve, tj. před vstupem do deklarativní sekce (ovšem až po vytvoření předcházející skupiny s deklarativní sekcí), nesmí však vynechat popis deklarativní sekce, neboť jinak by se hodnota položky PRINT-SWITCH vůbec netestovala.