Перейти до вмісту
ГОСТ 22558-89
/ 116

В формате 1 выполняются следующие действия:

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

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

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

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

В формате 2 значение имени-индекса-3 увеличивается или уменьшается на значение, которое соответствует числу вхождений, представляемому целым-2 или значением данного, представленно­го идентификатором-3, после этого процесс повторяется для каж­дого вхождения имени-индекса-3 и т. д. Каждый раз используется значение данного, представленного идентификатором-3, такое же, как в начале выполнения оператора.

Ниже представлены допустимые комбинации операндов в операторе SET (УСТАНОВИТЬ) в формате 1. Указанные ссылки относятся к общим правилам, применяемым при пересылке для данного сочетания операндов. .

Пересылаемое данное

Принимающее данное

Целоз-данное

Имя-индекса

Индексное данное

Целое-литерал

Не разрешено Зв

Разрешено За

Не разрешено 36

Целое-данное

Не разрешено Зв

Разрешено За

Не разрешено

36

Имя-индекса

Разрешено 'Зв

Разрешено За

Разрешено

36

Индексное

Не разрешено Зв

Разрешено За*

Разрешено 36*

* Никакие преобразования не имеют места.

Формат 3

Состояние каждого внешнего переключателя, соответствую­щего мнемоническому-имени-1, изменяется таким образом, что ре­зультирующее значение «истина» вычисления имени-условия, свя­занного с этим переключателем, будет отражать состояние «вклю­чено», если указана фраза ON (ВКЛЮЧЕНО), или состояние «выключено»; если указана фраза OFF (ВЫКЛЮЧЕНО) (см. п. 6.3.1.4 настоящей части).

Формат 4

Литерал во фразе VALUE (ЗНАЧЕНИЕ), соответству­ющей имени-условия-1, присваивается условной переменной согласно правилам использования фразы VALUE (ЗНАЧЕ­НИЕ) (см. п. 5.15 настоящей части). Если указано несколько литералов во фразе VALUE (ЗНАЧЕНИЕ), условной перемен­ной присваивается значение первого литерала, заданного в этой фразе.

Если указано несколько .имен условий при использовании ■ формата 4, результаты такие же, как и в случае записи отдель­ного оператора SET (УСТАНОВИТЬ) для каждого имени-усло­вия-1 в том же порядке, в каком они указаны в операторе SET (УСТАНОВИТЬ).

Оператор STOP (ОСТАНОВИТЬ)

Назначение

Оператор STOP (ОСТАНОВИТЬ) прекращает полностью или временно выполнение единицы исполнения.

Указание литерала в операторе STOP (ОСТАНОВИТЬ) явля­ется устаревшим элементом в настоящем стандарте и будет удале­но в следующей редакции стандарта.

Общий формат

STOP j RUN

[литерал-1

ОСТАНОВИТЬ j РАБ0ТУ . j

( литерал-1 j

Синтаксические правила

Литерал-1 не может быть стандартной константой, начина­ющейся словом ALL (ВСЕ).

Если оператор STOP RUN (ОСТАНОВИТЬ РАБОТУ) по­является в последовательности повелительных операторов предло­жения, то он должен быть последним оператором предложения.

Если литерал числовой, то он должен быть целым без зна­ка.

Общие правил а

Если указана фраза RUN (РАБОТУ), выполнение единицы исполнения прекращается и управление передается операционной системе.

При выполнении оператора STOP RUN (ОСТАНОВИТЬ РАБОТУ) выполняется неявный оператор CLOSE (ЗАКРЫТЬ)1 без необязательных вариантов для всех открытых файлов данной единицы исполнения. Никакие процедуры USE (ИСПОЛЬЗО­ВАТЬ), соответствующие этим файлам, не выполняются.

Если единица исполнения получала сообщения, то по опе­ратору STOP RUN (ОСТАНОВИТЬ РАБОТУ) система управле­ния сообщениями уничтожает в очереди сообщения, лишь частич­но полученные этой единицей исполнения.

Часть сообщения, передаваемая из единицы исполнения опе­ратором SEND (ПОСЛАТЬ), но не законченная EMI (ИКС) или EGI (ИКГ), исключается из системы.

Если указан вариант STOP (ОСТАНОВИТЬ) литерал-1, вы­полнение единицы исполнения приостанавливается, а литерал-1 сообщается оператору ЭВМ. Продолжение функционирования единицы исполнения начинается со следующего выполнимого опе­ратора в том случае, когда подключена зависящая от реализации процедура управления возобновлением единицы исполнения.

Оператор STRING (СОБРАТЬ)

Назначение

Оператор STRING (СОБРАТЬ) соединяет часть или полное содержимое двух или нескольких данных в одно данное.

Общи й формат

идентификатор-1 ]

литерал-1 ]

идентификатор-2

DELIMITED BY литерал-2 SIZE

INTO идентификатор-3

[WITH POINTER идентификатор-4]

[ON OVERFLOW повелительный-оператор-1]

[NOT ON OVERFLOW повелительный-оператор-3]

[END-STRING]

СОБРАТЬ I идентификатор-1 1 . ОГРАНИЧИВАЯСЬ . .ПИТРПЯЛ-

идентификатор-2

литерал-2 ...

РАЗМЕРОМ

В идентификатор-3 [УКАЗАТЕЛЬ идентификатор-4]

[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1 ]

[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2]

[КОНЕЦ-СОБРАТЬ]

Синтаксические правила

Литерал-1 и литерал-2 не могут быть стандартными кон­стантами, начинающимися со слова ALL (ВСЕ).

Все литералы должны быть нечисловыми литералами и все идентификаторы, за исключением идентификатора-4, дОлж­

ны быть определены явно или неявно с использованием DISPLAY (ДЛЯ ВЫДАЧИ).

Идентификатор-3 не может быть модификацией ссылки.

Идентификатор-3 не может быть редактируемым дан­ным; он не может быть описан с фразой JUSTIFIED (СДВИ­НУТО).

Идентификатор-4 должен быть описан как элементарное числовое целое данное, имеющее достаточный размер для того, чтобы содержать значение, равное увеличенному на единицу размеру данного, представленного идентификатором-3. Символ Р(М) не может использоваться в строке-литер шаблона данно­го, представленного идентификатором-4.

Если идентификатор-1 или идентификатор-2 представля­ют элементарные числовые данные, то они должны быть описа­ны как целые, причем соответствующие строки-литер шаблона не должны содержать литеры Р (М).

Общие правила

Идентификатор-1 и литерал-1 представляют собой пере­сылаемые данные, а идентификатор-3 — принимающее данное.

Литерал-2 и значение данного, представленного иденти­фикатором-2, указывают одну или несколько литер, ограничи­вающих перемещение. Если используется фраза SIZE (РАЗ­МЕРОМ), данные, определенные идентификатором-1 или лите­ралом-1, помещаются полностью. Если в качестве ограничите­ля используется стандартная константа, она представляет не­числовой литерал длиной в одну литеру.

Если вместо литерала-1 и литерала-2 используется стан­дартная константа, то она представляет данное длиной в одну литеру с использованием DISPLAY (ДЛЯ ВЫДАЧИ).

Перемещение данного при выполнении оператора STRING (СОБРАТЬ) определяется следующими правилами:

литеры из литерала-1 или из значения данного, представ­ляемого идентификатором-1, передаются в данное, представля­емое идентификатором-3, согласно правилам перемещения бук­венно-цифрового в буквенно-цифровое данное, однако дополне­ние пробелами не производится;

если задана фраза DELIMITED (ОГРАНИЧИВАЯСЬ) без фразы SIZE (РАЗМЕРОМ), значение данного, представляе­мого идентификатором-1, или значение литерала-1 передается в принимающее данное в последовательности, заданной опера­тором STRING (СОБРАТЬ), начиная с самой левой литеры и продолжая слева направо, пока не будет достигнут конец дан­ного или не встретится литера (литеры), заданная литералом-2 или значением данного, представленного идентификатором-2. Эта литера (литеры) не пересылается;

если задана фраза DELIMITED BY SIZE (ОГРАНИЧИ­ВАЯСЬ РАЗМЕРОМ), значение, представленное литералом-1, или значение данного, представляемого идентификатором-1, пе­редаются в последовательности, заданной оператором STRING (СОБРАТЬ), в данное, представляемое идентификатором-3, по­ка все данные не будут переданы или не будет достигнут ко­нец данного, определяемого идентификатором-3.

Эти действия повторяются до исчерпания всех вхождений литер ала-1 или данных, представленных идентификатором-1.

Если задана фраза POINTER (УКАЗАТЕЛЬ), значение данного, представленного идентификатором-4, перед выполне­нием оператора STRING (СОБРАТЬ) должно быть установле­но в начальное значение (не меньше 1).

Если фраза POINTER (УКАЗАТЕЛЬ) не задана, опера­тор выполняется так, как если бы было задано начальное значе­ние данного, представленного идентификатором-4, равное 1.

Когда литеры пересылаются в принимающее данное, на которое ссылается идентификатор-3, пересылка литер в при­нимающее данное начинается от указанной значением данного, представленного идентификатором-4, позиции литеры этого дан­ного (при условии, что значение данного, представленного иден­тификатором-4, не превышает длины данного, представленного идентификатором-3) и затем данное, представленное идентифи- катором-4, увеличивается на единицу перед пересылкой каж­дой литеры или перед завершением выполнения оператора STRING (СОБРАТЬ). Значение данного, представленного идентификатором-4, во время выполнения оператора STRING (СОБРАТЬ) изменяется только вышеописанным методом.

В результате выполнения оператора STRING (СОБ­РАТЬ) изменяется только та часть данного, представленного идентификатором-3, к которой было обращение во время выпол­нения оператора STRING (СОБРАТЬ). Оставшаяся часть дан­ного, представленного идентификатором-3, после выполнения оператора STRING (СОБРАТЬ) не изменяется.

Перед каждой пересылкой литеры в данное, представ­ленное идентификатором-3, если значение данного, представ­ленного идентификатором-4, окажется меньшим 1 либо прев­зойдет число позиций литер в данном, представляемом иденти­фикатором-3, дальнейшее перемещение в данное, представляе­мое идентификатором-3, прекращается и фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ), если она указана, игно­рируется, а управление передается на конец оператора STRING (СОБРАТЬ). Если в формате оператора указана фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), то выполняется пове- лительный-оператор-1, указанный в этой фразе. Если управле­ние передается повелительному-оператору-1, выполнение про­должается согласно правилам для каждого оператора, указан­ного в повелительном-операторе-1. Если выполняется оператор ветвления процедур или условный оператор, вызывающий яв­ную передачу управления, то управление передается согласно правилам для этих операторов; в противном случае по заверше­нии выполнения повелительного-оператора-1 управление пере­дается на конец оператора STRING (СОБРАТЬ).

Если во время выполнения оператора STRING (СОБ­РАТЬ) с фразой NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕ­НИЯ) условия, описанные в общем правиле (9), не встречают­ся, после пересылки данных согласно другим общим правилам фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ), если она указана, игнорируется и управление передается на конец опера­тора STRING (СОБРАТЬ), или, если указана фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ), повелительному-опера- тору-2. Если управление передается повелительному-операто- ру-2, выполнение продолжается согласно правилам для опера­торов, указанных в повелительном-операторе-2. Если выполня­ется ветвление процедуры или условный оператор, ведущий к явной передаче управления, управление передается в соответст­вии с правилами для этого оператора; в противном случае пос­ле завершения выполнения повелительного-оператора-2 управ­ление передается на конец оператора STRING (СОБРАТЬ).

(И) Фраза END-STRING (КОНЕЦ-СОБРАТЬ) ограничива­ет область действия оператора STRING (СОБРАТЬ) (см. ч. 4, п. 6.4.3).

Если идентификатор-1 и идентификатор-2 занимают ту же область памяти, что и идентификатор-3 и идентификатор-4, или идентификатор-3 и идентификатор-4 занимают одну и ту же область памяти, результат выполнения оператора STRING (СОБРАТЬ) не определен, даже если они определены одной и той же статьей описания данных (см. п. 6.4,5 настоящей части).

Оператор SUBTRACT (ОТНЯТЬ)

Назначение

Оператор SUBTRACT (ОТНЯТЬ) используется для того, что­бы вычесть одно числовое данное или сумму двух или более число­вых данных из одного или более данных и установить значения од­ного или более данных равными результату.

Общий формат

Формат 1

SUBTRACT f иДентиФикатор-1 j FROM {идентификатор-2

[ литерал-1 J

[ROUNDED]}...

[ON SIZE ERROR повелительный-оператор-1 ]

[NOT ON SIZE ERROR повелительный-оператор-2]

[END-SUBTRACT]

отнять |литерал1

[ идентификатор-1 J

ОТ {идентификатор-2 [ОКРУГЛЯЯ]} . ■ •

[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1 ]

[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2]

[КОНЕЦ-ОТНЯТЬ]

Формат 2

SUBTRACT І «ектвфикатор-1 ] FROM | »Д<="иф.»<атор.2

[литерал-1 j [литерал-2

GIVING {идентификатор-3 [ROUNDED]} ...

[ON SIZE ERROR повелительный-оператор-1]

[NOT ON SIZE ERROR повелительный-оператор-2]

[END-SUBTRACT]

ОТНЯТЬ литерал-1 1 ОТ < литерал-2 ]

[ идентификатор-1 | ' [ идентификатор-2 J ПОЛУЧАЯ {идентификатор-3 [ОКРУГЛЯЯ]}...

[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1]

[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2]

[КОНЕЦ-ОТНЯТЬ]

Формат 3

сттптплгт (CORRESPONDING 1 , ,

SUBTRACT {-лхРЕ> 1 идентификатор-1

I СОКК I

FROM, идентификатор-2 [ROUNDED]

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →