ГОСТ 22558-89 сторінка 44 з 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 (ПЕРВЫЙ), CONVERTING (ПРЕВРАЩАЯ) могут быть определены одна фраза 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, если их литеры попарно совпадают и:
Побачили розбіжність з офіційним текстом?