Cтраница 4
Объединение программы Тестрана с проверяемой программой может выполняться на уровне исходных модулей, как это показано на рис. 4.8, или на уровне объектных модулей в процессе редактирования связей. В последнем случае для отдельной трансляции проверяемой программы и программы Тестрана в операторе EXEC указывается опция TEST, и между этим): программами организуется связь с использованием внутренних и внешних имен. [46]
Группа в системе SBS. [47] |
Когда пользователь требует от SBS построить версию 3 программы XYZ, система SBS автоматически компилирует соответствующие версии модулей ( если файлы объектного кода для них пусты) и выполняет редактирование связей. Синхронизация исходного и объектного кода выполняется следующим образом: всякий раз, когда обновляется файл исходной программы, SBS автоматически стирает файл объектного кода этой версии, а также объектный код для любой группы, элементом которой является эта версия файла. Тем самым всегда обеспечивается соответствие объектного кода версии модуля или группы ( программы) последнему варианту исходной программы. [48]
Следовательно, программы могут пользоваться макрокомандами среды выполнения, служащими для запросов дополнительных областей памяти, обращения к независимым модулям, не присоединенным к основным программам ни при компиляции, ни при редактировании связей, ни при загрузке, а также для динамического распределения и последующего освобождения устройств и наборов данных. [49]
Не обязательно любая задача пользователя в процессе своего выполнения на ЭВМ должна проследовать по маршруту, представленному на рис. 3.3. Если исходные модули заранее оттранслированы, то решение задачи будет включать в себя только редактирование связей и выполнение. Если исходные модули давно оттранслированы, отредактированы, отлажены и хранятся в библиотеке в виде сформированного загрузочного модуля, то решение задачи заключается только в загрузке в ОП и выполнении готового загрузочного модуля. Таким образом, тот или иной этап обработки задачи определяется конкретной ситуацией и назначается самим пользователем. [50]
Транслятор с алгоритмического языка решает следующие задачи [8, 31] ( рис. 4.2): лексический и синтаксический контроль входного текста; распределение памяти переменных; семантический контроль; оптимизация программы; формирование последовательности автокодных команд, операторов макроязыка или объектного кода; загрузка и редактирование связей программ. [51]
Предлагаемая здесь методика программирования задачи основывается на этом различии и заключается в следующем: вначале записываются операторы ( программ, подпрограмм, последовательностей операторов, общих для нескольких программ, и последовательностей операторов описания массивов, используемых несколькими программами), а затем запросы управления компиляцией ( или ассемблированием) или интерпретацией, редактированием связей, выполнением и каталогизацией, а также запросы на создание и использование массивов. [52]