SNOMAN software is divided in logical entities called Software Units (SUs) each performing some well defined task. There are 3 types of SU:-
The above list reflects the calling hierarchy; each SU can only call SUs of the same type or types lower in the list. Thus the shell can call any SU but support systems can only call other support systems.
Initialisation proceeds as follows in INMAIN. First mandatory SUs are initialised. This must at least include ZEBRA and Management of Titles so that the program can read the user titles files to see what he/she wants to do!. Once the list of selected processors has been extracted from these files the shell initialises them plus any support systems they require. Care is taken to initialise an SU only after any SU on which it depends has been initialised.
The main processing loop is contained in QNEXT and EVMAIN where the processors are called as required.
During termination TMAIN calls SU termination routines in the reverse order to that in which they were initialised.