Petra Tobolíková IB49 PRG004 LS 30.4.2003
Specifikace zápočtového programu:
PROGRAM CAL

Cílem je vytvořit v Pascalu program cal inspirovaný utilitou cal operačního systému UNIX.

Program v souboru cal.exe se bude spouštět z příkazové řádky a zpracovávat parametry příkazové řádky podobně jako zmíněná utilita. Obecná syntaxe by mohla vypadat následovně:

cal [-3ypec] [[month] year]

kde [-3ypec] jsou nepovinné volby a [[month] year] nepovinné argumenty pro běh programu.

Základní funkce programu:

Pokud nejsou uvedeny žádné argumenty, vypíše se kalendář pro aktuální měsíc ve tvaru:

April 2003
MoTuWeThFrSaSu
 1 2 3 4 5 6
 7 8 910111213
14151617181920
21222324252627
282930

Měsíc začíná číslem 1, týden dnem Mo (Monday).

Jeden zadaný argument (celé číslo mezi 1 a 9999) specifikuje rok, pro který má být zobrazen kalendář, tj. kalendář jako v předchozím případě pro 12 měsíců. Číslo roku musí být uvedeno celé - "cal 84" zobrazí kalendář pro rok 84, nikoli 1984. Rok začíná vždy 1. lednem. Dva zadané argumenty určují měsíc (celé číslo mezi 1 a 12) a rok.
př. cal 4 2003

Další funkce programu:

Na základě uvedených voleb (optionů) může program vykonávat některé rozšiřující úkoly:
-3 Zobrazí zároveň kalendář pro předcházející, zvolený a následující měsíc.
př. cal -3 4 2003
-p Slouží pro výpočet fází měsíce. Zobrazí kalendář na stejném principu, jako bez této volby, navíc budou barevně zvýrazněny úplněk (např. žlutě) a nov (např. modře).
př. cal -p3 5 2003
-e Syntaxe: cal -e [year]
Slouží pro výpočet data Velikonoc v daném roce, implicitně aktuálním. Zobrazí kalendář pro příslušný měsíc s barevným zvýrazněním (např. zelený background). Uvedení měsíce nezpůsobí chybu, ale bude ignorováno, tj. v případě 2 argumentů se bere v úvahu pouze druhý. Lze kombinovat s volbami -3, -p a -c, ale v případě -3ec bude -3 ignorováno.
př.: cal -ce 1984
-c Syntaxe: cal -c [year]
Slouží pro výpočet dnů, kdy se mění zimní čas na letní a naopak v daném roce, implicitně aktuálním. Zobrazí kalendář pro příslušné 2 měsíce s barevným zvýrazněním (např. červený background). Uvedení měsíce nezpůsobí chybu, ale bude ignorováno, tj. v případě 2 argumentů se bere v úvahu pouze druhý. Lze kombinovat s volbami -3, -p a -e, ale v případě -3ec bude -3 ignorováno.
př. cal -3cp 1984 zobrazí celkem 6 měsíců
-h Pokud stojí na řádce jako jediný parametr, vypíše se help programu (spíše hint), jinak je ignorováno.
volání: cal -h

Nezáleží na pořadí, v jakém jsou volby uvedeny. Jejich kombinace by měly být logické a reálně proveditelné.

Chybové hlášení bude vyvoláno v případě, že:
- jsou zadány neznámé optiony
- na příkazové řádce je příliš mnoho parametrů
- některý argument neodpovídá požadovanému datovému typu nebo rozsahu.

Pozn.: Zvláštností je měsíc September 1752, kdy byly kvůli přechodu na Gregoriánský kalendář "přeskočeny" dny 3.-13.:

September 1752
MoTuWeThFrSaSu
 1 214151617
18192021222324
252627282930