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

Оператор-1 и (или) оператор-2 могут содержать оператор IF (ЕСЛИ). Оператор IF (ЕСЛИ) в этом случае называется вло­женным. Более детальные правила вложенности даются в соот­ветствующем параграфе (см. ч. 4, п. 6.4.3). Вложенные операторы могут рассматриваться как парные комбинации IF (ЕСЛИ), ELSE (ИНАЧЕ) и END-IF (КОНЕЦ-ЕСЛИ), задаваемые слева направо. Таким образом, любое встретившееся ELSE (ИНАЧЕ) или END- IF (КОНЕЦ-ЕСЛИ) рассматривается как связанное с непосредст­венно предшествующим IF (ЕСЛИ), которому еще нет парной фра­зы ELSE (ИНАЧЕ) или END-IF (КОНЕЦ-ЕСЛИ).

6 17. Оператор INITIALIZE (ИНИЦИИРОВАТЬ)

Назначение

Оператор INITIALIZE (ИНИЦИИРОВАТЬ) обеспечивает возможность присваивать выбранным типам полей данных за­ранее определенные значения, например, числовым данным ну­ли, буквенно-цифровым данным — пробелы.

Общий формат

INITIALIZE {идентификатор-1} . . .

{ ALPHABETIC

I ALPHANUMERIC

REPLACING I { NUMERIC

I I ALPHANUMERIC-EDITED [

NUMERIC-EDITED J

DATA BY ! ВДентификаторД 1 }

— I литерал-1 I J

ИНИЦИИРОВАТЬ {идентификатор-1} . . .

{БУКВЕННОЕ'

I ЗАМЕНЯЯ

БЦ I

{ЧИСЛОВОЕ }ДАННОЕ НА

IБЦР ’ I

' ЧР I

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

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

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

Каждая категория, заданная во фразе REPLACING (ЗАМЕНЯЯ), должна быть допустимой для принимающего опе­ранда в операторе MOVE (ПОМЕСТИТЬ), в котором литерал-1 или данное, на которое ссылается идентификатор-2, использу­ется как посылаемый операнд (п. 6.19 настоящей части).

Одна и та же категория не может повторяться во фразе REPLACING (ЗАМЕНЯЯ).

Описание данного, заданного идентификатором-1 или подчиненного идентификатору-1, не должно содержать фразу OCCURS (ПОВТОРЯЕТСЯ) с вариантом DEPENDING (В ЗА­ВИСИМОСТИ ОТ).

Индексное данное не может быть операндом оператора INITIALIZE (ИНИЦИИРОВАТЬ).

Статья описания данного для данного, заданного иденти­фикатором-1, не должна содержать фразу RENAMES (ПЕРЕ­ИМЕНОВЫВАЕТ).

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

Ключевое слово, следующее за словом REPLACING (ЗА­МЕНЯЯ), соответствует категориям данных, как они определя­ются в этом документе (см. я. 4, п. 4.3.3).

В зависимости от того, ссылается ли идентификатор-1 на элементарное или групповое данное, все действия выполняются, как если бы была написана последовательность операторов MOVE (ПОМЕСТИТЬ), каждый из которых имеет в качестве принимающего поля элементарное данное, подчиняющееся сле­дующим правилам:

если задана фраза REPLACING (ЗАМЕНЯЯ):

если идентификатор-1 ссылается на групповое данное, лю­бое подчиненное ему элементарное данное инициируется только в том случае, если оно принадлежит к категории, заданной во фразе REPLACING (ЗАМЕНЯЯ);

если идентификатор-1 ссылается на элементарное дан­ное, то это данное инициируется, только если оно принадлежит к категории, заданной во фразе REPLACING (ЗАМЕНЯЯ).

Эта инициация производится следующим образом.

Данное, на которое ссылается идентификатор-2 или лите­рал-1, действует как посылаемый операнд соответствующего не­явного оператора MOVE (ПОМЕСТИТЬ).

Это действие распространяется на все принимающие эле­ментарные поля, включая все вхождения элементов таблицы в групповом данном за исключением полей, перечисленных в пунк­тах (3) и (4) общих правил.

Действие оператора INITIALIZE (ИНИЦИИРОВАТЬ) не распространяется на индексные данные и элементарные дан­ные FILLER (ЗАПОЛНИТЕЛЬ).

Любое данное, которое подчиняется идентификатору принимающего данного и содержит фразу REDEFINES (ПЕРЕ­ОПРЕДЕЛЯЕТ), или любое подчиненное ему данное исключа­ется из операции инициации. Однако принимающее данное или содержащее его данное может иметь в своем описании фразу REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ).

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

Во всех случаях содержимое данных, на которые ссыла­ется идентификатор-1, устанавливается на указанные значения в порядке (слева направо) появления идентификатора-1 в опе­раторе INITIALIZE (ИНИЦИИРОВАТЬ). В пределах этой последовательности, если идентификатор-1 ссылается на груп­повое данное, подчиненные ему элементарные данные иницииру­ются в порядке их определения внутри группы.

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

6 18. Оператор INSPECT (ПРОСМОТРЕТЬ)

Назначение

Оператор INSPECT (ПРОСМОТРЕТЬ) обеспечивает возмож­ность подсчета или замены вхождений единичных литер или це- почек литер в данном.

Общий формат

Формат 1

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


CHARACTERS INITIAL

AFTER


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


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


ALL I fl идентификатор-3

LEADING I (( литерал-1


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


ПРОСМОТРЕТЬ идентификатор-1 СЧИТАЯ


ЛИТЕРЫ


7 ДО

(после


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


/ BEFORE 1 INITIAL jAFTER j


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


ВСЕ I ( I идентификатор-3

ВЕДУЩИЕ / (( литер ал-1 идентификатор-4 литерал-2


7 до

I ПОСЛЕ

СлЗ

О Формат 2

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


CHARACTERS BY ( иДентиФикатоР-5 |

[ литерал-3 j


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


ALL LEADING FIRST


f BEFORE 1

I AFTER )


INITIAL


340 ГОСТ 22558—89


идентификатор-3 1 j$y f ВДентификатор-5

литерал-1 I 1 литерал-3


Гf BEFORE { AFTER


INITIAL


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


ПРОСМОТРЕТЬ идентификатор-1 ЗАМЕНЯЯ


ЛИТЕРЫ НА


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


ДО. 1 І идентификатор-4

ПОСЛЕ JI литерал-2


ВСЕ ВЕДУЩИЕ ПЕРВЫЙ


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


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

НА { о

— I литерал-3


( ДО 1 ( идентификатор-4 I ПОСЛЕ I I литерал-2

Формат З

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


CHARACTERS


fBEFORE 1

(AFTER J


INITIAL


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

I


REPLACING


f идентификатор-4 1 .

I литерал-2 J 1-І LEADING ] ft идентификатор-3 ALL I Ц литерал-1


( идентификатор-4 11 .—.. 1 .—.

I литерал-2 J l—i 1-І


CHARACTERS BY ( иДентиФикатоР-5 ]

[ литерал-3 )


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


ALL LEADING FIRST


'J BEFORE (AFTER


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


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


BEFORE

AFTER


INITIAL


J BEFORE 1 I AFTER )


INITIAL


INITIAL / иден'тиФикатоР‘4 і литерал-2


ГОСТ 22558—89 C.

ю ПРОСМОТРЕТЬ идентификатор-1 СЧИТАЯ


ЛИТЕРЫ


ДО 1 J идентификатор-4 ПОСЛЕ JI литерал-2


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


( ВСЕ

1 ВЕДУЩИЕ


идентификатор-31 Г| ДО литерал-1 J I ПОСЛЕ


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


342 ГОСТ 22558—89

ВСЕ ВЕДУЩИЕ ПЕРВЫЙ

I ДО I j идентификатор-4

I ПОСЛЕ J I литерал-2

ЗАМЕНЯЯ

ЛИТЕРЫ НА І

[ литерал-3

[[ идентификатор-3 ) | идентификатор-5 1 ГJ ДО

Ц литерал-1 /—I литерал-3 J | ПОСЛЕ

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

Формат 4

INSPECT идентификатор-1 CONVERTING ( ВДен™ФИІ<атор-6 1 TQ ( идентификатор-7

— 1 литерал-4 J 1 литерал-5

' ( BEFORE I initial / идентификатор-4

( AFTER J [ литерал-2

ПРОСМОТРЕТЬ идентификатор-1 ПРЕВРАЩАЯ ! идентиФикатоР-6 1 в ( идентификатор-7

[литерал-4 j[литерал-5

{ ДО [ I идентификатор-4

[ ОО

ОО

ГОСТ 22558—89

ПОСЛЕ ( [ литерал-2

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

Для всех форматов:

Идентификатор-1 должен относиться к групповому данно­му или к элементарному данному любой категории с заданным (явно или неявно) использованием DISPLAY (ДЛЯ ВЫДАЧИ).

Идентификатор-3, идентификатор-4 и так далее должны от­носиться к элементарному данному с заданным (явно или неявно) использованием DISPLAY (ДЛЯ ВЫДАЧИ).

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

Для каждой из фраз ALL (ВСЕ), LEADING (ВЕДУ­ЩИЕ), CHARACTERS (ЛИТЕРЫ), FIRST (ПЕРВЫЙ), CON­VERTING (ПРЕВРАЩАЯ) могут быть определены одна фраза BEFORE (ДО) и одна фраза AFTER (ПОСЛЕ).

На уровне 1 ядра литерал-1, литерал-2, литерал-3 и данные, представляемые идентификатором-3, идентификатором-4 и иден- тификатором-5, должны состоять из одной литеры.[ Это ограниче­ние не применяется на уровне 2, кроме случаев, специально ого­воренных в синтаксических и общих правилах. |

При использовании форматов 1 и 3 идентификатор-2 дол­жен представлять элементарное числовое данное.

При использовании форматов 2 и 3 размер литерала-3 или данного, представляемого идентификатором-5, должны быть рав­ны размеру литерала-1 или данного, представляемого идентифи­катором-3. Если вместо литерала-3 используется стандартная кон­станта, размер данного, представленного стандартной константой, равен размеру литерала-1 или размеру данного, представляемого. идентификатором-3.

Если используется фраза CHARACTERS (ЛИТЕРЫ), то литерал-2, литерал-3 или значение данных, представляемых иден­тификатором-4, идентификатором-5, должны состоять из одной ли­теры.

При использовании формата 4 размер литерала-5 или данного, представляемого идентификатором-?, должен быть ра­вен размеру литерала-4 или данного, представляемого иденти­фикатором-6. Если вместо литерала-5 используется стандартная константа, размер данного, представленного стандартной кон­стантой, равен размеру литерала-4 или размеру данного, пред­ставляемого идентификатором-6.

Одна и та же литера не должна содержаться дважды ни в литерале-4, ни в данном, представляемом идентификатором-6.

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

Для всех форматов:

При просмотре (который включает цикл сравнения, уста­новление границ для фраз BEFORE (ДО) и AFTER (ПОСЛЕ) и механизм подсчета или замещения) данное, представленное иден­тификатором-1, независимо от его класса, просматривается, начи­ная от своей самой левой позиции литеры, слева направо до самой правой позиции; выполняемые при этом действия и область их применения оговорены в общих правилах (5) —(7).

При просмотре содержимое данных, указанных идентифи­катором-1, идентификатором-3, идентификатором-4, идентифика­тором-5, идентификатором-6, идентификатором-?, трактуется сле­дующим образом:

если какое-либо из данных, представленных идентификато­ром-!, идентификатором-3, идентификатором-4, идентификато­ром-5, идентификатором-6 или идентификатором-?, описано как буквенное или буквенно-цифровое, то оператор INSPECT (ПРО­СМОТРЕТЬ) обрабатывает значение каждого такого данного как строку литер;

если какое-либо из данных, представленных идентификато­ром-1, идентификатором-3, идентификатором-4, идентификато­ром-5, идентификатором-6 или идентификатором-?, описано как буквенно-цифровое редактируемое, числовое редактируемое или числовое без знака, то оператор INSPECT (ПРОСМОТРЕТЬ) об­рабатывает значение каждого такого данного так, как переопреде­ленное на буквенно-цифровое (см. общее правило 2а);

если какой-либо из перечисленных ранее идентификаторов представляет числовое данное со знаком, это данное рассматрива­ется при выполнении оператора так, как если бы оно было поме­щено в числовое данное без знака того же размера, после чего к нему применяется правило 26 (п. 6.19 настоящей части). Если идентификатор-1 представляет числовое данное со знаком, перво­начальное значение знака сохраняется после завершения операто­ра INSPECT (ПРОСМОТРЕТЬ).

х (3) При изложении ниже правил (5) — (17) все, оговоренное для литерала-1, литерала-2, литерала-3, литерала-4 и литерала-5, применяется в равной мере к значениям данных, представленных идентифИкатором-3, идентификатором-4, идентификатором-5, иден- тификіатором-6 и идентификатором-? соответственно.

Индексы, связанные с любым идентификатором, вычисля­ются один раз в начале выполнения оператора INSPECT (ПРО­СМОТРЕТЬ).

В форматах 1 и 2

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

Проверка вхождения литерала-1 в идентификатор-1 для подсчета или замены осуществляется по следующим правилам:

а) операнды фраз TALLYING (СЧИТАЯ) и REPLACING (ЗА­МЕНЯЯ) рассматриваются в том порядке, в котором они представ­лены в операторе слева направо. Первый из литералов-1 сравни­вается с соответствующим количеством первых слева позиций ли­тер данного, представленного идентификатором-1. Литерал-1 сов­падает с порцией данного, представляемого идентификатором-1, если их литеры попарно совпадают и:

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

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

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

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

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

Весь розділ →