Změny

Skočit na navigaci Skočit na vyhledávání

ErrorAddr

Přidáno 2 059 bajtů, 20. 10. 2012, 00:10
Vytvorená stránka „ExitProc, ExitCode a ErrorAddr implementují výstupní proceduru aplikace. ExitProc umožňuje instalovat výstupní proceduru, která se bude volat ja...“
[[ExitProc]], [[ExitCode]] a [[ErrorAddr]] implementují výstupní proceduru aplikace.

[[ExitProc]] umožňuje instalovat výstupní proceduru, která se bude volat jako součást ukončení programu. Výstupní procedura nemá žádné parametry a musí být přeložena s direktivou far, aby se zajistil vzdálený model volání. Správně instalovaná závěrečná procedura se ve skutečnosti stává jedním článkem celého řetězu závěrečných procedur. Tento řetěz umožňuje jednotkám stejně jako programům instalaci jejich vlastních závěrečných procedur.

Pro správný průběh závěrečných operací je nezbytné zachovat původní výstupní proceduru, tj. před instalací vlastní uložit její původní adresu, kterou obsahuje proměnná [[ExitProc]].

První příkaz vaší vlastní závěrečné procedury musí uschovanou adresu původní procedury opět vrátit do proměnné [[ExitProc]].

Závěrečná procedura může zjistit z obsahu proměnné [[ExitCode]] příčinu ukončení programu a z proměnné [[ErrorAddr]] adresu případné chyby.
* V případě řádného ukončení programu je [[ExitCode]] roven nule a v ErrorAddr je hodnota [[nil]].
* Pokud program končí na základě volání procedury [[Halt]], objeví se v [[ExitCode]] hodnota jejího parametru, ale [[ErrorAddr]] je stále [[nil]].
* Při vzniku chyby, která vede k ukončení programu, obsahuje [[ExitCode]] její číselný kód a [[ErrorAddr]] adresu příkazu, u kterého se chyba projevila.


Jako poslední se vždy provádí standardní závěrečná procedura, instalovaná přímo jednotkou System. Ta zavře standardní soubory Input a Output a obnoví vektory přerušení, které program při startu přebíral. Pokud není [[ErrorAddr]] rovno [[nil]], vypíše navíc chybové hlášení. Poté, co knihovní podprogram zavolal všechny závěrečné procedury, vrací řízení [[DOS]]u nebo [[Windows]], kam předává i návratový kód z proměnné [[ExitCode]].


[[Category:System]]
[[Category:Proměnné_System]]

Navigační menu