1. Оператор IF (ЕСЛИ)

    1. Назначение

Оператор IF (ЕСЛИ) приводит к вычислению условия (см. п. 6.3 настоящей части).

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

  1. Общий формат

IF vpnnnup 1 then / {оператор-1}... 1

IF условие-1 THEN I NEXT SENTENCE }

ELSE оператор-2 . . . [END-IF] ELSE NEXT SENTENCE END-IF

РГ ПМ 1 f {оператор-1}. ..

—условие-1 і СЛЕдуЮщЕЕ ПРЕДЛОЖЕНИЕ

ИНАЧЕ {оператор-2}... [КОНЕЦ-ЕСЛИ] ИНАЧЕ СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ КОНЕЦ-ЕСЛИ

  1. С

    условные I

    и н т а к с и ч е с к и е правила
  1. Оператор-1 и оператор-2 представляют собой

операторы или повелительные операторы, | за которыми, Без-можно, следуют условные операторы . Дальнейшее описание пра­вил управления выполнением оператора-1 и оператора-2 дается в другом месте (см. ч. 4, п. 6.4.3).

  1. Фраза ELSE NEXT SENTENCE (ИНАЧЕ СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ) может быть опущена, если она непосредствен­но предшествует точке, ограничивающей предложение.

  2. Если задана фраза END-IF (К.ОНЕЦ-ЕСЛИ), фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ) не должна зада­ваться.

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

  1. Область действия оператора IF (ЕСЛИ) может ограничи­ваться одним из следующих способов:

  1. фразой END-IF (КОНЕЦ-ЕСЛИ) на том же уровне вло­женности;

  2. разделителем точкой;

  3. если оператор вложенный, то фразой ELSE (ИНАЧЕ) оператора IF (ЕСЛИ) на более высоком уровне вложенности (см. ч. 4, п. 6.4.3).

  1. При выполнении оператора IF (ЕСЛИ) имеют место сле­дующие передачи управления:

  1. если условие истинно и задан оператор-1, управление пере­дается первому оператору оператора-1 и выполнение продолжает­ся в соответствии с правилами для каждого оператора из операто- ра-1. Если выполняется оператор ветвления процедур или ус­ловный оператор J , который осуществляет явную передачу управ­ления, управление передается явно в соответствии с правилами для этого оператора. После завершения выполнения оператора-1 фра­за ELSE (ИНАЧЕ), даже если она указана, игнорируется и уп­равление передается на конец оператора IF (ЕСЛИ);

  2. если условие истинно и вместо оператора-1 задана фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ), фраза ELSE (ИНАЧЕ), если она задана, игнорируется и управление пе­редается на следующее выполнимое предложение;

  3. если условие ложно и задан оператор-2, оператор-1 или за­меняющая его фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕД­ЛОЖЕНИЕ) игнорируется, управление передается на первый опе­ратор оператора-2 и выполнение продолжается в соответствии с правилами для каждого оператора из оператора-2. Если выполня­ется оператор ветвления процедур или условный оператор, который осуществляет явную передачу управления, управление передается явно в соответствии с правилами для этого оператора. После за­вершения выполнения оператора-2 управление передается на ко­нец оператора IF (ЕСЛИ);

  4. если условие ложно, а фраза ELSE (ИНАЧЕ) не указана, оператор-1 игнорируется и управление передается на конец опера­тора IF (ЕСЛИ);

  5. если условие ложно и задана фраза ELSE NEXT SENTENCE (ИНАЧЕ СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ), оператор-1 игнори­руется, а управление передается на следующее выполнимое пред­ложение.

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

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

  1. Назначение

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

  1. Общий формат

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. С и н т а к с и ч е с к и е правила

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Назначение

Оператор 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

  1. [

    ОО

    ОО

    ГОСТ 22558—89

    ПОСЛЕ ( [ литерал-2Синтаксические правила

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

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

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

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

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

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

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

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

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

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

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