Структура программы

Выполненная и подготовленная программа может иметь вид одно- фазовой (в простейшем варианте) или многофазовой программы.
Под фазой (или абсолютным модулем) понимается программный модуль, который загружается в основную память для выполнения. Фаза моделируется из объектных модулей, которые в свою очередь были получены независимыми трансляциями исходных модулей (не исключено, что на различных языках), и из подпрограмм. Данные подпрограммы хранятся в системной и/или личной библиотеке объектных модулей.
У многофазовой программы может быть простая структура, а может быть структура с перекрытием или оверлейная структура.
Программа, которая полностью размещается в области основной памяти, предоставленной пользователю, обычно, представляет собой однофазовую или многофазовую с простой структурой. В нее входит несколько фаз (в частности, из одной), которые размещаются в смежных участках памяти.
В многофазовой программе, у которой структура с перекрытием, отдельные фазы, сменяя одна другую в процессе выполнения, занимают одну и ту же область памяти, накладываясь на уже отработавшие. По аналогии с сиделкой, которая ни когда не оставляет больного, так как сменяется другой сиделкой. Тем самым удается выполнить программу большого объема, располагая ограниченной областью основной памяти.
Работа оверлейной программы начинается с выполнения ее головной фазы. В процессе выполнения головная фаза (а также любая последующая) загружает другие фазы и передает им управление.
Головная фаза называется корневой, если во время работы программы она все время остается в памяти и другими фазами не перекрывается.
При перекрытии без корневой фазы каждая фаза вызывает следующую на свое место.
Головная фаза загружается в основную память с помощью управляющего оператора ЕХЕС. Другие фазы вызываются в процессе выполнения многофазовой программы. Для этого имеются специальные средства.
В программах, написанных на языке Ассемблера, для этой цели служит макрокоманда FETCH (загрузить и выполнить фазу), LOAD (загрузить фазу) с указанием имени фазы; в программах на языке ФОРТРАН для этой цели используется оператор GALL OPSYS (’LOAD’, имя фазы) (загрузить фазу).
Рекомендуется включать в корневую фазу все модули, которые необходимы и для других фаз.
Язык Ассемблера позволяет создать объектный модуль в виде одной или нескольких программных секций, каждая из которых независимо может помещаться в разные фазы.
Модульная и фазовая структура программы планируется пользователем при создании программы на исходном языке и описывается с помощью управляющих операторов РЕДАКТОРА.