Cтраница 3
Результатом работы подпрограммы является массив значений результирующего полинома на заданной сетке. Дополнитель ные значения полинома, построенного в результате работы подпрограммы SIPORG, можно вычислить, не повторяя всех построений подпрограммы. [31]
Подпрограмма MAXMIN не содержит параметров. Передача данных, необходимых для работы подпрограммы, из основной программы и возвращение результата работы подпрограммы в основную программу происходит через общую область. Переменные X, Y и массив А в основной программе и переменные АМАХ, AMIN и массив А в подпрограмме располагаются в общей области и, таким обра -, зом, массив А при вводе расположится в области памяти, доступной и для подпрограммы, а переменные АМАХ и AMIN располагаются после работы подпрограммы в ячейках памяти, которые отведены и для переменных X и Y основной программы. [32]
Проблемная программа может иметь сложную модульную структуру с передачами управления от модуля к модулю средствами ОС ЕС - CALL или LINK. Если база данных была открыта в вызывающем модуле, то вызываемый модуль должен иметь возможность продолжать работу с базой данных, а вызывающий модуль после возврата ему управления должен быть в состоянии воспользоваться результатами работы подпрограммы, даже если это касается базы данных. [33]
После завершения работы подпрограммы эти ячейки возвращаются в резерв. Результат работы подпрограммы предварительно пересылается в стандартную ячейку. Этот способ обычно используется в подпрограммах, составленных компилятором, и подробнее будет описан в разд. Заметим, что и при этом способе должна существовать по крайней мере одна ячейка, общая для всех обращений к подпрограммам - ячейка, в которой хранится начальный адрес группы остальных рабочих ячеек ( в разд. [34]
![]() |
Подпрограмма проверки таблицы на упорядоченность. [35] |
Эта подпрограмма получает управление при первом прохождении цикла программы на РПГ. Программа на РПГ передает ей имя таблицы и указатель HI, который необходимо включить при нарушении упорядоченности таблицы TABARG. Результатом работы подпрограммы является включенный указатель HI, если таблица не упорядочена, и информация в полях НОМЕР и ARG, в которые соответственно заносится порядковый номер и содержимое элемента таблицы, нарушающего упорядоченность. Память для этих полей зарезервирована в подпрограмме. [36]
В подпрограмме FACTOR LU-разложение формируется на месте матрицы А без выбора ведущего элемента. Подпрограмма FSUB использует результаты работы подпрограммы FACTOR для соответствующих преобразований правой части системы. Подпрограмма BSUB выполняет обратную подстановку. [37]
По отношению к каждой подпрограмме все переменные программы условно разделим на четыре группы - входные, вы-ходные, внутренние и прочие. Входные - это переменные, которым присваиваются значения исходных данных, необходимые для решения задачи, реализуемой данной подпрограммой. Выходные - это переменные, в которых получаются результаты работы подпрограммы. То есть через входные и выходные переменные основная программа осуществляет обмен информацией с подпрограммой. Таким образом, имена входных и выходных переменных обязательно присутствуют как в основной программе, так и в подпрограмме. [38]
По отношению к каждой подпрограмме все переменные программы условно разделим на четыре группы - входные, выходные, внутренние и прочие. Входные - это переменные, которым присваиваются значения исходных данных, необходимые для решения задачи, реализуемой данной подпрограммой. Выходные - это переменные, в которых получаются результаты работы подпрограммы. То есть через входные и выходные переменные основная программа осуществляет обмен информацией с подпрограммой. Таким образом, имена входных и выходных переменных обязательно присутствуют как в основной программе, так и в подпрограмме. [39]
Для работы любой программы требуются общие регистры, причем содержимое некоторых из них может измениться в результате выполнения программы. Те же регистры может использовать и основная программа, поэтому в системе программирования ЕС ЭВМ Принято, что на выходе из подпрограммы содержимое общих регистров должно быть тем же, что и в момент обращения к подпрограмме. Исключением могут быть только регистры, в которых формируются результаты работы подпрограммы. [40]
Подпрограмма Встреча предназначена для определения опасности встречи ствола бурящейся скважины с уже пробуренными соседними скважинами куста или с соседними проектными. Она использует в качестве исходных данных координаты траектории стволов сравниваемых скважин и допустимое расстояние между двумя соседними скважинами в горизонтальной плоскости. Исходные данные хранятся в БД. Результаты работы подпрограммы оперативно выдаются на печать или на рабочее место оператора. [41]
Замкнутые библиотечные подпрограммы составлены в окончательном конкретном виде и должны быть введены в определенное место памяти. Включение их в основную программу состоит в том, что в основной программе ставится несколько команд для переноса исходных для подпрограмм данных во входные ячейки подпрограммы и, кроме того, ставится команда, передающая управление первой из команд подпрограммы. В конце подпрограммы ставится команда возврата к основной программе. Результаты работы подпрограммы получаются в выходных ячейках подпрограммы. В машинах, имеющих команды условного или безусловного перехода с возвратом ( вроде команды 27 Стрелы), библиотечная подпрограмма оканчивается холостой командой, занимающей ячейку, предназначенную для автоматической записи в нее команды возврата к основной программе. В этом случае подпрограмма не содержит ни одной заранее неизвестной команды. [42]
Приведенная подпрограмма обеспечивает нахождение максимального элемента двумерного массива NxM. Значения элементов массива В, числа строк массива N, числа столбцов М передаются в подпрограмму через список параметров. В этом случае размерность массива В в подпрограмме описывается с помощью оператора DIMENSION. В результате работы подпрограммы определяется максимальный элемент массива ВМАХ, который выводится на печать и передается в вызывающую программу через список параметров. [43]
Составление подпрограммы требует известной осмотрительности. Например, необходимо следить за тем, чтобы участвующие в ее работе адресуемые регистры не совпадали с теми, где хранятся числа, необходимые для дальнейшей работы основной программы. Аргументы, используемые в подпрограмме, лучше всего к моменту обращения к ней располагать в регистрах стека. Там же рекомендуется размещать результаты работы подпрограммы к моменту возвращения к основной программе. [44]
После ввода заданных матриц осуществляется обращение к подпрограмме SR для вычисления произведения матриц А и В. Формальные аргументы при обращении заменяются фактическим с которыми подпрограмма выполняется. Фактические аргументы А, В, 3, 4; 3 -являются входными данными для подпрограммы, аргумент АВ ( имя матрицы-произведения) - выход подпрограммы. При этом в основную программу передаются значения компонент матрицы-произведения АВ, вычисленной в результате работы подпрограммы. [45]