1. Идентификация параметров

Данные, передаваемые вызывающей программой в качестве параметров другой программе, должны быть доступны для вызы­вающей программы, и данные, получающие передаваемые данные, должны быть объявлены в разделе данных вызываемой програм­мы. В вызываемой программе требуемые параметры идентифици­руются списком ссылок на параметры заголовка раздела проце­дур этой программы с помощью имен, присвоенных параметрам в статьях описания данных этой программы. В вызывающей прог­рамме значения параметров, передаваемых вызываемой програм­ме, идентифицируются списком ссылок в операторе CALL (ВЫЗ­ВАТЬ), используемом для вызова этой программы. Для этих списков во время выполнения устанавливается позиционное со­ответствие между значениями их элементов, как они известны каж­дой программе, то есть, первому параметру в одном списке соот­ветствует первый параметр в другом списке, второму — второй и т. д. Так, например, программа, которую может вызвать другая программа, может включать строки:

PROGRAM-ID. EXAMPLE.

PROCEDURE DIVISION USING NUM, PCODE, COST.

ПРОГРАММА. ПРИМЕР.

РАЗДЕЛ ПРОЦЕДУР ИСПОЛЬЗУЯ НОМ, РКОД, СТОИМ, и может быть вызвана выполнением оператора

CALL “EXAMPLE" USING NBR, PTYPE, PRICE.

ВЫЗВАТЬ “ПРИМЕР" ИСПОЛЬЗУЯ ЧИС, РТИП, ЦЕНА.

При этом устанавливается следующее соответствие:

Вызываемая программа Вызывающая программа

NUM (НОМ) NBR (ЧИС)

PCODE (РКОД) PTYPE (РТИП)

COST (СТОИМ) PRICE (ЦЕНА)

Существенны только позиции имен-данных, но не сами имена.

  1. Значения параметров

Вызывающая программа управляет методами, по которым вы­зываемая программа вычисляет значения передаваемых ей пара­метров и возвращает результаты как измененные значения пара­метров.

Отдельные параметры, на которые имеются ссылки в фразе USING (ИСПОЛЬЗУЯ) оператора CALL (ВЫЗВАТЬ), можно передавать как значение или ссылку.

Вызываемая программа может использовать и изменять зна­чение данного, упомянутого в операторе CALL (ВЫЗВАТЬ) вызы­вающей программы в качестве параметра, передаваемого как <ссылка. Вызываемой программе запрещено обращаться и изме­нять данное вызывающей программы, если оно указано в операто­ре CALL (ВЫЗВАТЬ) в качестве параметра, передаваемого как значение. Значение параметра вычисляется при выполнении опе­ратора CALL (ВЫЗВАТЬ) и предоставляется вызываемой про­грамме. Это значение может быть изменено вызываемой програм­мой во время ее выполнения, но значение соответствующего дан­ного в вызывающей программе не изменяется. Таким образом, параметр, передаваемый как ссылка, может использоваться вызы­ваемой программой для возврата значения вызывающей програм­ме, в то время как параметр, передаваемый как значение, не мо­жет быть так использован.

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

  1. Общие данные

Две программы в единице исполнения могут ссылаться на об­щие данные в следующих случаях:

  1. на содержимое данного внешней записи данных можно ссы­латься из любой программы при условии, что в программе описана эта запись данных (см. п. 6.2,2 настоящей части);

  2. если программа содержится в другой программе, обе про­граммы могут ссылаться на данные, обладающие свойством «гло­бальное» либо в содержащей программе, либо в любой програм­ме, которая непосредственно или косвенно содержит содержащую программу (см. п. 6.2.1 настоящей части);

  3. механизм, при помощи которого значение параметра пере­дается как ссылка из вызывающей программы в вызываемую про­грамму, устанавливает общее данное; вызываемая программа, ис­пользуя, возможно, другой идентификатор, может ссылаться на данное в вызывающей программе.

  1. О б щ и е файлы

Две программы в единице исполнения могут ссылаться на об­щие определители файла при следующих обстоятельствах:

  1. на внешний определитель файла можно ссылаться из любой программы, описывающей этот определитель файла (см. п. 6.2.2 настоящей части);

  2. если программа содержится в другой программе, обе про­граммы могут ссылаться на общий определитель файла, исполь­зуя соответствующее глобальное имя-файла либо в содержащей программе, либо в любой программе, которая непосредственно или косвенно содержит содержащую программу (см. п. 6.2.1 настоя­щей части).

  1. Внутрипрограммные связи

Процедуры, составляющие раздел процедур программы, со-общаются друг с другом посредством передачи управления или обращения к общим данным.

  1. П е р е д а ч а управления

Имеются четыре способа передачи управления в программах:

  1. Оператор GO ТО (ПЕРЕЙТИ К).

  2. Оператор PERFORM (ВЫПОЛНИТЬ).

  3. Процедура ввода, связанная с оператором SORT (СОРТИ­РОВАТЬ), или процедура вывода, связанная с оператором SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ).

  4. Декларативная процедура, которая активируется при воз­никновении определенных условий, включая условия ошибки.

Процедуру ввода-вывода можно рассматривать как неявный оператор PERFORM (ВЫПОЛНИТЬ), который выполняется сов­местно с оператором MERGE (СЛИТЬ) или SORT (СОРТИРО­ВАТЬ); по этой причине ограничения на оператор PERFORM (ВЫПОЛНИТЬ) относятся в равной степени к процедурам ввода- вывода.

К декларативным процедурам применяются более строгие ог­раничения, чем ограничения для оператора PERFORM (ВЫПОЛ­НИТЬ).

  1. Общие данные

На все данные, объявленные в разделе данных программы, можно ссылаться в операторах процедур, процедур ввода-вывода и декларатив, составляющих эту программу. При определенных условиях программа может ссылаться на данные, не объявленные в ее разделе данных (см. п. 6.2 настоящей части).

  1. Сегментация

Средства сегментации дают возможность пользователю физи­чески подразделять на более мелкие части раздел процедур объ­ектной Кобол-программы. Все исходные параграфы, которые со­держат одинаковые номера сегментов в заголовках их секций, будут рассматриваться во время выполнения как единый сегмент. Так как номера сегментов могут принимать значения от 00 до 99, то объектная программа может быть разделена максимум на 100 сегментов.

Сегменты программы могут быть трех типов: фиксированные постоянные (неперекрываемые), фиксированные перекрываемые и независимые. Тип задается номерами сегментов.

Фиксированные неперекрываемые сегменты находятся всегда в памяти во время выполнения всей программы; они не могут пере­крываться в памяти, за исключением того случая, когда система выполняет другую программу; в таком случае фиксированные сег­менты могут быть временно «свернуты».

Фиксированные перекрываемые сегменты могут перекрыва­ться в памяти во время выполнения программы, но такое перекры- 88тие не должно касаться пользователя, то есть они логически иден­тичны фиксированным сегментам, но физически отличны от них.

Независимые сегменты могут налагаться один на другой в па­мяти, но такое перекрытие приведет к инициализации сегмента. Поэтому независимые сегменты логически отличны от фиксиро­ванных перекрываемых или фиксированных неперекрываемых сег­ментов и физически отличны от фиксированных сегментов.

  1. СРЕДСТВА КОММУНИКАЦИЙ

Средства коммуникаций дают возможность получения, обра­ботки и создания сообщений или их частей. Посредством системы управления сообщениями они позволяют связываться с местными и дистанционными коммуникационными устройствами.

  1. Система управления сообщениями

Реализация средств коммуникации в программах на Коболе требует наличия системы управления сообщениями в операцион­ной среде объектной Кобол-программы.

Система управления сообщениями логически связана с опе­рационной системой, под управлением которой выполняется объ­ектная Кобол-программа. Система управления сообщениями вы­полняет следующие основные функции:

  1. осуществляет связь между объектной Кобол-программой и сетью коммуникационных устройств, подобно тому как операци­онная система осуществляет связь между объектной программой Кобола и такими устройствами, как устройства ввода перфокарт, устройства печати, магнитные ленты и устройства массовой па­мяти;

  2. поддерживает порядок на линии, выполняя вызов адреса­та, упорядочение передач сообщений по каналам связи и синхро­низацию;

  3. выполняет такие зависящие от устройства работы, как пе­рекодировка символов и вставка управляющих символов, что да­ет возможность пользователю Кобола создавать программы, неза­висимые от устройств.

Первая функция — связь между объектной программой Кобо­ла и коммуникационными устройствами — наиболее очевидна для пользователя. О наличии двух других функций пользователь мо­жет и не знать. Сообщения от коммуникационных устройств поме­щаются системой управления сообщениями во входные очереди в ожидании передачи объектной Кобол-программе. Выходные со­общения объектной Кобол-программы помещаются системой уп­равления сообщениями в выходные очереди в ожидании передачи на коммуникационные устройства. Структура, форматы и симво­лические имена очередей определяются для системы управления сообщениями пользователем до выполнения объектной про* граммы. До выполнения программы определяются также симво­лические имена источников сообщений и адресатов. В програм­ме на Коболе могут использоваться только символические имена, известные системе управления сообщениями.

Во время выполнения объектной программы система управле­ния сообщениями выполняет все необходимые действия по обнов­лению различных очередей.

  1. Объектная программа Кобола

Объектная программа взаимодействует с системой управления сообщениями, когда необходимо переслать и получить данные или опросить состояние различных очередей, которые создаются и поддерживаются системой управления сообщениями. Кроме то­го, объектная программа может потребовать от системы управле­ния сообщениями установить или прервать логическую связь между коммуникационным устройством и заданной частью струк­туры очереди. Способ реализации физической связи является функцией системы управления сообщениями.

  1. Связь программы на Коболе с системой управления сообще­ниями и коммуникационными устройствами

Взаимосвязь с коммуникационными устройствами устанавли­вается в Коболе посредством статьи описания коммуникации CD (ОК) в секции коммуникаций раздела данных.

Различают два вида связи:

  1. между объектной программой и системой управления со­общениями;

  2. между системой управления сообщениями и коммуникаци­онными устройствами.

Для управления связью с системой управления сообщениями в исходной программе на Коболе используют три оператора:

  1. RECEIVE (ПОЛУЧИТЬ), который вызывает передачу объ­ектной программе данных из очереди;

  2. SEND (ПОСЛАТЬ), который вызывает передачу данных из объектной программы в одну или более очередей;

  3. ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИСЛО СООБ­ЩЕНИЙ), который указывает системе управления сообщениями, что она должна сообщить объектной программе число полных со­общений в данной структуре очереди.

Для управления связью между системой управления сообще­ниями и коммуникационными устройствами в исходной програм­ме используются два оператора:

  1. ENABLE (РАЗРЕШИТЬ), который устанавливает логиче­скую связь между системой управления сообщениями и одним или несколькими заданными коммуникационными устройствами;

  2. DISABLE (ЗАПРЕТИТЬ), который разрывает логическую связь между системой управления сообщениями и одним или не­сколькими заданными коммуникационными устройствами.

На рис. 1 показана взаимосвязь программы на Коболе с комму­никационными устройствами (п. 7.5.2 настоящей части).

программа Система управления «оммуникаиионньї?

на сообщениями устройства



  1. Вызов объектной программы Кобола

Существуют два метода вызова объектной программы Кобола, использующей средства коммуникаций: запланированный запуск и вызов системой управления сообщениями.

  1. Разница между этими методами заключается только в том, как производится заполнение некоторых областей в указанной статье CD (ОК).Запланированный запуск объектной программы Кобола Объектная программа Кобола, использующая средства ком­муникаций, может быть вызвана для выполнения через обычные операционные средства, например, язык управления заданиями. В этом случае программа может использовать три метода для опре­деления того, какие сообщения, если они имеются, доступны во входных очередях:

  1. оператор ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИС­ЛО СООБЩЕНИЙ);

  2. оператор ACCEPT (ПРИНЯТЬ) с вариантом NO DATA (НЕТ ДАННЫХ);

  3. оператор ACCEPT (ПРИНЯТЬ) без варианта NO DATA (НЕТ ДАННЫХ). В этом случае подразумевается, что программа переходит в состояние ожидания, если нет доступных данных.

  1. Вызов объектной программы Кобола системой управле­ния сообщениями

Иногда желательно вызвать для выполнения объектную про­грамму, использующую средства коммуникаций, только тогда, когда для нее имеется требуемая информация. Такой вызов осу­ществляется системой управления сообщениями, когда она опре­деляет, что требуется объектная программа для обработки имею­щегося сообщения. Каждая объектная программа, вызываемая системой управления сообщениями, создает единицу исполнения. До начала выполнения объектной программы система управления сообщениями помещает имена символических очередей и подоче­редей в области данных, определенные статьей описания коммуни­каций с фразой FOR INITIAL INPUT (ДЛЯ НАЧАЛЬНОГО ВВО­ДА), или система управления сообщениями помещает символиче­ское имя терминала в область данных, определенную статьей опи­сания коммуникации с фразой FOR INITIAL 1-0 (ДЛЯ НАЧАЛЬ­НОГО ВВОДА-ВЫВОДА).