Этот раздел мы посвятим рассмотрению одного специального вопроса, представляющего большой интерес для всех программистов. В предыдущем раздее было введено понятие подпрограммы. Подпрограммой была названа программа, выполняющаяся по запросам других программ, называемых вызывающими. Теперь мы рассмотрим организацию связей, необходимых для обеспечения взаимодействия между вызывающей программой и подпрограммами. Нашей целью является краткая формулировка основных принципов организации связей, т. е. установление того, как можно добиться обработки подпрограммой требуемой исходной информации и возобновления по окончании этой обработки выполнения основной программы с соответствующего места. Нам придется, теперь уже более детально, рассмотреть макрокоманды связи INITIAL и EOJ.
Система связей подпрограмм в целом представляет собой некоторое множество соглашений, разрабатывавшихся в течение достаточно долгого времени и нашедших свое воплощение в соответствующей системе макрокоманд IBM. Несмотря на то что, вообще говоря, возможно, а иногда даже необходимо действовать вопреки этим соглашениям, программист, поступающий подобным образом, неизбежно идет на риск. Составленная им «нестандартная» программа может оказаться не в состоянии успешно взаимодействовать как с операционной системой, так и с другими программами пользователей. Большинство программ, входящих в программное обеспечение, поставляемое фирмой IBM, составлены с учетом этих соглашений. Подобные соглашения выполняются для программ на ФОРТРАНе, КОБОЛе и многих других языках. Изучив предлагаемый материал, вы сможете организовать взаимодействие вашей программы с программами, написанными на других языках, а также с программами, предоставляемыми фирмой IBM.
Команды связи с подпрограммами
BAL R1,D2(X2,B2) |
Branch And Link |
R1?(PC); PC?D2 + (X2) + (B2) |
BALR R1, R2 |
Branch And Link Register |
R1?(PC); PC?(R2) |
LM R1 ,R3,D2(B2) |
Load Multiple |
Загрузить в регистры с R1 по R3 содержимое последовательных слов памяти, начиная с адреса D2+(B2) |
STM R1,R3,D2(B2) |
STore Multiple |
Записать в последовательные слова памяти, начиная с адреса D2 + (B2), содержимое регистров с R1 по R3 |