Подчиненная программа - Большая Энциклопедия Нефти и Газа, статья, страница 1
Жизнь человеку дается один раз, но, как правило, в самый неподходящий момент. Законы Мерфи (еще...)

Подчиненная программа

Cтраница 1


Подчиненная программа должна содержать предложение, возвращающее управление в главную программу.  [1]

При вызове подчиненной программы она загружается во внутреннюю память и выделяется место как для ее файловой области, так и для ее области рабочей-памяти. Будучи однажды вызвана, она остается в памяти в том же самом состоянии, в котором она находилась после выполнения оператора EXIT PROGRAM. Таким образом, любые значения, первоначально заданные с помощью фраз VALUE IS ( ЗНАЧЕНИЕ) и менявшиеся впоследствии, при последующих вызовах уже не будут установлены в исходное состояние. Если бы вызывалась вторая, а затем и третья программа, как показано в примере на рис. 7.2, то доступная внутренняя память быстро оказалась бы заполненной и для следующей вызываемой программы уже не осталось бы в ней места.  [2]

Для завершения связи в подчиненной программе необходимо задать две статьи.  [3]

Однако существует возможность, позволяющая подчиненной программе обрабатывать данные, принадлежащие главной программе.  [4]

Параграф, содержащий предложение EXIT PROGRAM, может находиться в любом месте подчиненной программы. Он вовсе не обязательно должен быть последним параграфом, как было в случае предложения EXIT ( ВЫЙТИ), описанного в предыдущей главе. Однако действует он точно так же, возвращая управление оператору главной программы, следующему за оператором CALL. Если программа, в которой написано предложение EXIT PROGRAM выполняется самостоятельно ( а не будучи вызвана какой-либо другой программой), то это предложение игнорируется. В этом случае будет просто выполняться написанный вслед за ним параграф.  [5]

Если в одном из входов ТУОП найден номер задачи, формально освобождаются области перекрытия, занимаемые подчиненной программой.  [6]

7 Пример межпрограммных связей ( Банк-ОС. [7]

В среде Ассемблера оператор LIST является исполнительным и должен выполняться после OPENB в головной программе и LINKB в подчиненных программах, но перед вызовом подпрограммы. Оператор LIST выдает на РГ1 адрес списка параметров, предназначенного для операторов LINKB и FREEB в подпрограмме.  [8]

До сих пор мы рассматривали подпрограммы в контексте взаимоотношений главной и подчиненной программ: вызывающая ( главная) программа производит вызов подпрограммы ( подчиненной программы), которая выполняется от начала до конца и передает управление вызывающей программе. В языке Паскаль подпрограммы ( процедуры и функции) в такой степени зависят от главной программы, что им не разрешается сохранять свои собственные локальные данные между последовательными вызовами. Сопрограммы позволяют заменить эту структуру набором взаимодействующих программных модулей без указания главного модуля.  [9]

Параграф EXIT аналогичен параграфу EXIT PROGRAM, но используется он в конце подчиненной процедуры, в то время как EXIT PROGRAM используется в конце подчиненной программы. Уже указывалось, что подчиненная процедура может исполняться подобно другим параграфам программы, если обычная последовательность команд приводит к ее первому оператору без вызова с помощью оператора PERFORM. При этом оператор EXIT не вызывает передачи управления, а управление, минуя его, передается следующему параграфу.  [10]

При обращении к внутренней программе содержимое рабочих ячеек и полей, а также индексных ячеек внешней программы должно быть сохранено до возвращения в нее. Поэтому в подчиненных программах одной цепочки вложенности для рабочих ячеек и полей, а также индексов должны использоваться разные ячейки памяти.  [11]

При обращении к внутренней программе содержимое рабочих ячеек и полей, а также индексных ячеек внешней программы должно быть сохранено до возвращения в нее. Поэтому в подчиненных программах одной цепочки вложенности для рабочих ячеек и полей, а также индексов должны использоваться разные ячейки памяти.  [12]

Программа, которая вызывает в память другую программу и запускает ее, называется главной программой; вызываемая подобным образом программа называется подчиненной. Главная программа может вызывать много различных подчиненных программ. Такая последовательность вызовов показана на рис. 7.2, где программа А по очереди вызывает программы X, Y и Z. Подчиненная программа в свою очередь может вызывать свои подчиненные программы, будучи по отношению к ним главной. Соответствующая последовательность управляющих вызовов показана на рис. 7.3. В этой последовательности подчиненная программа может быть главной по отношению к любому числу ее собственных подчиненных программ. Однако подчиненная программа никогда не может вызвать ни одну из программ, главных по отношению к ней в этой иерархии. Любая программа может вызвать любую другую программу, если только вызываемая программа никогда не вызывает вызывающую программу или любую другую программу, главную по отношению к вызывающей.  [13]

Эвристики, описанные в диссертации автора [23], и многие из тех, которые в то время еще лишь предлагались, теперь воплощены в программах НАЙТИ, ЧТО СВЕРХУ. Эти программы, естественно, связаны с набором подчиненных программ и с программой СВЯЗАТЬ ОБЛАСТИ, которая включается в работу в случае, если встречаются области, не приписанные каким-либо объектам.  [14]

Положение каждого имени в обоих списках является существенным, так как оно служит для установления эквивалентности имен. Этих двух списков достаточно для установления эквивалентности имен, однако в разделе данных подчиненной программы необходимо задавать дополнительный набор статей. Подчиненной программе необходимо знать тип и размер значений совместно используемых данных. Секция LINKAGE должна следовать за секцией WORKING-STORAGE. Она включает статьи-описания-данного уровней 01 и 77, как и секция WORKING-STORAGE, но фразы VALUE IS для этих статей не допускаются. Секция LINKAGE не выделяет никакой памяти под данные, она просто переописывает область памяти, выделенную в главной программе, под совместно используемые данные. Использование статей описания в секции LINKAGE позволяет подчиненной программе изменять шаблоны совместно используемых данных при условии, что число литер в них остается неизменным. С этой точки зрения статьи в секции LINKAGE аналогичны фразам REDEFINES.  [15]



Страницы:      1    2