## Informácie | O programe (podrobnejšie)

^ O programe | ^^ Informácie | Úlohy >>

#### Ako to funguje (podrobnejšie)

Na základe vstupných parametrov sa program rozhodne, ktorú z úloh ide riešiť. Vo väčšine z úloh je potrebné analyzovať rok, a to podľa (pohyblivého) dátumu veľkonočnej nedele, ktorá určuje ostatné liturgické obdobia. Presnejšie, vykonajú sa nasledujúce kroky:

1. Zistí sa aktuálny dátum.
2. Pre daný rok sa spustí funkcia `analyzuj_rok()`, ktorá naplní štruktúru pre daný (kalendárny) rok, ktorá obsahuje dátumy najvýznamnejších medzníkov liturgického roka v danom kalendárnom roku a charakteristiky roka. Medzníkmi pre účely programu sú:
   1. Krst Krista Kráľa (1. nedeľa v období „cez rok“, ktorou sa končí Vianočné obdobie),
   2. Popolcová streda (začína sa Pôstne obdobie),
   3. Veľkonočná nedeľa (končí sa Pôstne obdobie a začína sa Veľkonočné obdobie),
   4. Nanebovstúpenie Pána (končí sa 1. časť veľkonočného obdobia), Zoslanie Ducha Svätého (končí sa celé Veľkonočné obdobie a pokračuje Cezročné obdobie),
   5. Prvá adventná nedeľa (končí sa Cezročné obdobe, začína Adventné obdobie),
   6. Sviatok Svätej rodiny.
   Ostatné pohyblivé slávenia sa ľahko vypočítajú podľa medzníkov, napr.:
   1. Kvetná nedeľa: 7 dní pred Veľkonočnou nedeľou (podobne Zelený štvrtok, Veľký piatok, Biela sobota, Veľkonočný pondelok, Nedeľa vo Veľkonočnej oktáve),
   2. Najsvätejšej Trojice: 7 dní po Zoslaní Ducha Svätého,
   3. Najsvätejšieho Tela a Krvi: 11 dní po Zoslaní Ducha Svätého,
   4. Najsvätejšieho Srdca Ježišovho: 19 dní po Zoslaní Ducha Svätého.
   Charakteristikami roka sú:
   1. či je rok priestupný,
   2. písmeno liturgického roka, ktorý začína Prvou adventnou nedeľou kalendárneho roka,
   3. nedeľné písmeno/písmená (niekedy nedeľná litera),
   4. poradové číslo týždňa obdobia „cez rok“, v ktorom začína Pôstne obdobie (teda v ktorom je Popolcová streda),
   5. poradové číslo týždňa obdobia „cez rok“, ktorý nasleduje po Nedeli Zoslania Ducha Svätého, ktorou sa končí Veľkonočné obdobie.
3. Pre daný dátum sa spustí funkcia `rozbor_dna()`, ktorá naplní štruktúru pre každý deň údajmi jednak kalendárnymi (deň v týždni, poradie dňa v roku), „dvak“ liturgickými (liturgický rok, liturgické obdobie, týždeň žaltára, poradové číslo slávenia podľa č. 59 Všeobecných smerníc o liturgickom roku a o kalendári, či je slávenie prikázaným sviatkom, napokon prípadné vlastné meno slávenia),
4. Podľa takto pripravených štruktúr sa ľahko vygeneruje stránka s aktuálnymi údajmi (dátum, mesiac, roky).

#### Informácie o jednotlivom dni

Pre generovanie informácie o jednotlivom dni (bez určenej modlitby) vyzerá postup programu takto: spustí funkciu `rozbor_dna()` pre daný deň a výsledok zobrazí. Spomínaná funkcia `rozbor_dna()` je jednou z kľúčových funkčností aplikácie, preto sa jej budem venovať trošku podrobnejšie.

- 1. fáza: Všeobecné liturgické dáta
  Táto fáza zaradí daný deň (podľa dátumu, presnejšie poradového čísla dňa v roku) do liturgického obdobia, teda podľa medzníkov spomínaných vyššie určí, o aké liturgické obdobie ide. Program pritom interne používa nasledujúce konštanty:
  - `/* liturgicke obdobia */`
    `//OBD_ADVENTNE`
    `#define OBD_ADVENTNE_I 1 /* do 16. decembra */`
    `#define OBD_ADVENTNE_II 2 /* po 16. decembri */`
    `//OBD_VIANOCNE`
    `#define OBD_VIANOCNE_I 3 /* do slavnosti zjavenia pana */`
    `#define OBD_VIANOCNE_II 4 /* po slavnosti zjavenia pana */`
    `//OBD_CEZ_ROK`
    `#define OBD_CEZ_ROK 5`
    `//OBD_POSTNE`
    `#define OBD_POSTNE_I 6 /* do soboty v piatom tyzdni */`
    `#define OBD_POSTNE_II_VELKY_TYZDEN 7 /* velky tyzden */`
    `//OBD_VELKONOCNE`
    `#define OBD_VELKONOCNE_TROJDNIE 8 /* umucenia a zmrtvychvstania Pana */`
    `#define OBD_VELKONOCNE_I 9 /* do nanebovstupenia pana */`
    `#define OBD_VELKONOCNE_II 10 /* po nanebovstupeni pana */`
    `/* nasleduju specialne pod-obdobia */`
    `#define OBD_VELKONOCNA_OKTAVA 0 /* velkonocna nedela -- 2. velk. ne */`
    `#define OBD_OKTAVA_NARODENIA 11 /* narodenie Pana -- 1. jan. */`
  V tejto časti sa určia všetky slávenia, ktoré sú v breviári v častiach Vlastné časti liturgických období a Slávnosti v období „cez rok“. Ďalej sa určia poradové týždne: týždeň daného obdobia, týždeň žaltára. Určia aj prípadné slávenia, ktoré pripadnú na hraničné dni medzi obdobiami (medzníky).
- 2. fáza: Liturgické dáta pre sviatky svätých
  Táto fáza pre daný deň (bez ohľadu na predošlé liturgické začlenenie) zistí počet sviatkov svätých (berieme totiž do úvahy, že v daný deň môže byť viac ľubovoľných spomienok) a pre každý z nich vytvorí dátovú štruktúru, ktorá obsahuje najmä názov slávenia, typ slávenia a podštruktúru s dátami, ktoré určujú, odkiaľ sa má brať spoločná časť slávenia. Príklad uvádza čiastočné nastavenie dátových štruktúr pre dátum 24. apríla:
  `_global_svaty1.typslav = SLAV_LUB_SPOMIENKA;`
  `_global_svaty1.smer = 12; /* lubovolne spomienky podla vseobecneho kalendara */`
  `strcpy(_global_svaty1.meno, "Sv. Juraja, mučeníka");`
  `_global_svaty1.spolcast = _encode_spol_cast(MODL_SPOL_CAST_MUCENIK);`
  `pocet = 2;`
  `_global_svaty2.typslav = SLAV_LUB_SPOMIENKA;`
  `_global_svaty2.smer = 12; /* lubovolne spomienky podla vseobecneho kalendara */`
  `strcpy(_global_svaty2.meno, "Sv. Fidéla zo Sigmaringenu, kňaza a mučeníka");`
  `_global_svaty2.spolcast =`
  - `_encode_spol_cast(MODL_SPOL_CAST_MUCENIK, MODL_SPOL_CAST_DUCH_PAST_KNAZ);`
  Pripomíname, že v tejto fáze sa všetky slávenia, ktoré sú v breviári zaradené v časti Vlastné časti na sviatky svätých.
- 3. fáza: Porovnanie
  Zo všetkých slávení, prichádzajúcich do úvahy sa uprednostní to slávenie, ktoré má v tabuľke liturgických dní vyšší stupeň. Ak ide o sobotu v období cez rok, berie sa do úvahy aj spomienka Panny Márie v sobotu.

#### Vytvorenie modlitby

Pre generovanie modlitby vyzerá postup programu takto:

- ak ide o vešpery/kompletórium, treba generovať „nadvakrát“, a to preto, lebo v prípade, keď prvé vešpery nasledujúceho dňa majú prednosť pred vešperami tohto dňa,
- teda v prípade vešpier/kompletória spustí funkciu `rozbor_dna()` pre nasledujúci deň (a ak si to okolnosti vyžadujú, tak aj `analyzuj_rok()` pre nasledujúci rok), výsledok uchová,
- spustí funkciu `rozbor_dna()` pre daný deň, ako je popísané vyššie, a výsledok uchová,
- nastavia sa spoločné časti pre slávenia z vlastnej časti svätých, a to podľa toho, čo bolo nastavené funkciou `rozbor_dna()` pre daný deň, ako bolo popísané vyššie,
- ak slávenie používa žalmy zo žaltára, spustí sa funkcia, ktorá vráti požadované žalmy,
- v prípade vešpier/kompletória zobrazí modlitbu pre ten deň, ktorý má prednosť,
- vyššie spomínaný výsledok obsahuje dátovú štruktúru s jednotlivými zložkami modlitby, a to dvojice <súbor, kotva> pre každú časť modlitby. (Zodpovedá to označkovaniu v jednotlivých HTML súboroch.) Pod časťou sa rozumie každá antifóna, žalm, responzórium, hymnus, modlitba dňa či slávenia (kolekta), jednoducho všetko, čo sa potenciálne môže opakovať a často sa aj opakuje. To je dôvod, prečo sa modlitba generuje, a nie je v statickej pobode. Isteže, pohodlnejšie je celý breviár mať v statickej podobe tak, ako je, na internete Avšak on-line breviár umožňuje vygenerovať súvislý text modlitby bez toho, že by bolo potrebné listovať v breviári a hľadať hymnus na inom mieste ako antifóny a na ďalšom mieste žalmy resp. chválospev.
- Modlitba sa generuje tak, že do prázdnej šablóny (obsahuje iba nadpisy jednotlivých častí modlitby a pevné súčasti modlitby, ako úvodné Sláva Otcu či záverečné požehnanie) sa postupne vkladajú časti, a to tak, že daná časť sa hľadá v súbore súbor od miesta BEGIN:kotva po miesto END:kotva (a to aj viacnásobne) podľa dvojice <súbor, kotva>, a to podľa toho, ako je to v jednotlivom zdrojovom HTML súbore vyznačené.

#### Náčrt ostatnej funkčnosti

Pre generovanie tabuľky pohyblivých slávení vyzerá postup programu takto:

- pre každý rok sa spustí funkcia `analyzuj_rok()`, ktorá naplní štruktúru pre daný (kalendárny) rok,
- jednotlivé údaje sa vypíšu do riadka tabuľky (s prípadnými hypertextovými odkazmi).

Podobne sa generuje aj analýza roka, kde sa naviac generujú aj tlačidlá pre nasledujúci a predchádzajúci rok.

Autor programovej časti © 1999-2019 Juraj Vidéky
Všetky práva vyhradené.