Пример 4

INSPECT ТЕМ TALLYING

СО-О FOR ALL «АВ» AFTER «ВА» BEFORE «ВС»

ПРОСМОТРЕТЬ ТЕМ СЧИТАЯ

В СО-О ВСЕ «АВ» ПОСЛЕ «ВА» ДО «ВС»

INSPECT ТЕМ REPLACING

ALL «АВ» BY «XY» AFTER «ВА» BEFORE «ВС»ПРОСМОТРЕТЬ ТЕМ ЗАМЕНЯЯ

ВСЕ «АВ» НА «ХУ» ПОСЛЕ «ВА» ДО «ВС». Результаты работы операторов показаны ниже.

Исходное значение данного ТЕМ

со 0

Результирующее значение данного ТЕМ

АВАВАВАВС

1

ABABXYABC



Пример 5

INSPECT ТЕМ CONVERTING

«ABCD» ТО «XYZX» AFTER QUOTE BEFORE «#» ПРОСМОТРЕТЬ ТЕМ ПРЕВРАЩАЯ

«ABCD» В «XYZX» ПОСЛЕ КАВЫЧКА ДО «#»

Этот оператор эквивалентен следующему:

INSPECT ITEM REPLACING

ALL «А» BY «X» AFTER QUOTE BEFORE «#» ALL «В» BY «Y» AFTER QUOTE BEFORE «#» ALL «С» BY «Z» AFTER QUOTE BEFORE «#» ALL «D» BY «X» AFTER QUOTE BEFORE «#» ПРОСМОТРЕТЬ ТЕМ ЗАМЕНЯЯ

ВСЕ «А» НА «X» ПОСЛЕ КАВЫЧКА ДО «#» ВСЕ «В» НА «Y» ПОСЛЕ КАВЫЧКА ДО «#» ВСЕ «С» НА «Z» ПОСЛЕ КАВЫЧКА ДО «#» ВСЕ «D» НА «X» ПОСЛЕ КАВЫЧКА ДО «#»

Результаты работы оператора показаны ниже.

Начальное значение ТЕМ

Результирующее значение ТЕМ

AC «AEBDFBCD # АВ» D

AC «XEYXFYZX # АВ» D



6 19. Оператор MOVE (ПОМЕСТИТЬ)

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

Оператор MOVE (ПОМЕСТИТЬ) пересылает данные в соот­ветствии с правилами редактирования в одно или несколько полей данных.

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

Формат 1

MOVE І иДентиФикатоР 1 1 JQ {идентификатор-2}...

[литерал-1 J ..

ПОМЕСТИТЬ ( ндеитнфикзтоР'1 1 в {идентификатор-2} ...

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

■Формат 2

[CORRESPONDING ) , ,

MOVE } идентификатор-1 ТО

-[сокк ]

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

(СООТВЕТСТВЕННО)

НОМЕРІ И 1Ь { 1 идентификатор-1 В

I 1 D I

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

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



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

  2. CORR (СООТВ) является сокращением слова CORRES­PONDING (СООТВЕТСТВЕННО).

  3. При использовании фразы CORRESPONDING (СООТ­ВЕТСТВЕННО) оба идентификатора должны представлять групповые данные.

  4. Индексное данное не может появляться как операнд опера­тора MOVE (ПОМЕСТИТЬ).

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

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

  2. Литерал-1 или содержимое данного, представленного иден­тификатором- 1, перемещается в данное, представленное иденти- фикатором-2 в том порядке, в каком они определены. Правила, относящиеся к идентификатору-2, применяются также и к дру­гим принимающим полям. | Длина и индексы, относящиеся к идентификатору-2, вычисляются непосредственно перед перемеще­нием данного в соответствующее поле.

Индексы, связанные с идентификатором-1, вычисляются толь­ко один раз непосредственно перед помещением данных в первый из принимающих операндов.Длина данного, представленного идентификатором-1, вычис­ляется только один раз непосредственно перед помещением дан­ных в первый из принимающих операндов.

На вычисление длины идентификатор а-1 или идентификато­ра-2 может влиять вариант DEPENDING ON (В ЗАВИСИМОС­ТИ ОТ) фразы OCCURS (ПОВТОРЯЕТСЯ) (см. п. 5.8 настоя­щей части).

Результат действия оператора

MOVE А (М) ТОМ, Р (М)

ПОМЕСТИТЬ А(М) В М, Р(М) эквивалентен операторам

MOVE А (М) ТО temp ПОМЕСТИТЬ А (М) В пром

MOVE temp ТО М ПОМЕСТИТЬ пром В М

MOVE temp ТО Р (М) ПОМЕСТИТЬ пром В Р (М)

где «temp» («пром») — промежуточный результат, обеспечивае­мый реализацией.

  1. Перемещение, в котором принимающий операнд является элементарным данным, а пересылаемый операнд — литералом ли­бо элементарным данным, называется элементарным перемещени­ем. Каждое элементарное данное принадлежит одной из следую­щих категорий: числовой, буквенной, буквенно-цифровой, числовой редактируемой, буквенно-цифровой редактируемой (см. п. 5.9 нас­тоящей части). Числовые литералы принадлежат к числовой ка­тегории, а нечисловые — к буквенно-цифровой категории. Стан­дартная константа ZERO, ZEROES (НУЛЬ, НУЛИ) при переме­щении в числовое или числовое редактируемое данное относится к числовой категории.

Во всех прочих случаях она относится к буквенно-цифровой ка­тегории.

Стандартная константа SPACE, SPACES (ПРОБЕЛ, ПРОБЕ­ЛЫ) относится к буквенной категории. Все остальные стандартные константы относятся к буквенно-цифровой категории.

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

  1. буквенно-цифровое редактируемое, стандартная константа SPACE (ПРОБЕЛ) или буквенное данное не должны перемещать­ся в числовое или числовое редактируемое данное;

  2. числовое или числовое редактируемое данное, числовой ли­терал и стандартная константа ZERO (НУЛЬ) не могут переме­щаться в буквенное данное;

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

  4. на уровне 1 числовое редактируемое данное не должно пере­мещаться в числовое или числовое редактируемое данное;

  5. прочие элементарные перемещения являются допустимыми и выполняются согласно общему правилу (4).

(4) Во время выполнения допустимого элементарного переме­щения производятся все необходимые преобразования данного из одной формы внутреннего представления в другую, сопровождаю- щиеся редактированием, определенным для принимающего данно- го, или дередактированием, предполагаемым принимающим дан-

ным. Следующие правила применяются к допустимым элемен­тарным перемещениям:

  1. если принимающим данным является буквенно-цифровое ре­дактируемое или буквенно-цифровое данное, производится вырав­нивание и любое необходимое дополнение пробелами, как это оп­ределено стандартными правилами выравнивания (см. ч. 4, п. 4.3.6). Если пересылаемое данное описано как числовое со зна­ком, знак числа не пересылается; если знак числа занимает от­дельную позицию литеры, то эта литера не пересылается и размер пересылаемого данного на одну литеру меньше, чем его действи­тельный размер в терминах литер стандартного формата данных (см. п. 5.12 настоящей части).

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

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

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

  1. Если принимающее данное не имеет диака числа, при переме­щении используется абсолютное значение пересылаемого данного.

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

в) если принимающее поле описано как буквенное, имеет место выравнивание и необходимое дополнение пробелами по ранее оп­ределенным правилам (см. ч. 4, п. 4.3.6).

  1. Перемещение, которое не является элементарным, рассмат­ривается как элементарное перемещение буквенно-цифрового дан­ного в буквенно-цифровое; однако при этом не выполняются преоб­разования данных из одной формы внутреннего представления в другую. При таком перемещении принимающее поле будет заполня­ться без рассмотрения особенностей отдельных элементарных или групповых данных, содержащихся в пересылаемом или принимаю- щем поле, кроме случая, отмеченного в общем правиле фразы [ [OCCURS (ПОВТОРЯЕТСЯ) (см. ч. 4, п. 5.8). |

  2. Ниже иллюстрируются допустимые сочетания категорий операндов оператора MOVE (ПОМЕСТИТЬ).

Категория пересылаемого данного

Категория принимающего данного

Буквенная

Буквенно-цифровая, буквенно-цифровая редактируемая

Числовая (целое), числовая (нецелое), числовая редак тн- руе.мая

Буквенная

Да

По п. 4в

Да

По п. 4а

Нет

По п. За

Буквенно-цифровая

Да

По п. 4в

Да

По п. 4а

Да

По п. 46

Буквенно-цифровая редак­тируемая

Да

По п. 4в

Да

Пэ п. 4а

Нет

По п. За

Числовая (целое)

Нет

По п. 36

Да

По п. 4а

Да

По п. 46

Числовая (нецелое)

Нет

По п. 36

Нет

По п. Зв

Да

По п. 46

Числовая редактируемая

Нет

По и. 36

Да

Пэ п. 4а

Да

По п. 46

Примечание. «Да» обозначает допустимость пересылки, «нет» — запре­щение. Ссылка на общее правило указывает правило, запрещающее пересылку или объясняющее порядок перемещения.

  1. Оператор MULTIPLY (УМНОЖИТЬ)

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

Оператор MULTIPLY (УМНОЖИТЬ) позволяет перемножить числовые данные и присвоить значение произведения результату.

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

Формат 1

... тт тшт V I идентификатор-! ] , о

MULTIPLY { , BY {идентификатор-2

( литерал-1 ]—

[ROUNDED])...

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

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

[END-MULTIPLY]

vu.4T.vT/rjTT идентификатор-1 ... , , o

УМНОЖИТЬ , НА {идентификатор-2

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

[ОКРУГЛЯЯ]). ■■

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

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

[КОНЕЦ-УМНОЖИТЬ]

Формат 2

MULTIPLY ( иДентиФикат°Р-56 ) BY I идентификатор-2 1

(литерал-1 j і литерал-2 ]

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

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

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

[END-MULTIPLY]

УМНОЖИТЬ ! чдентнфик.тор-1 ] нд І ттдевтттфнкатор-2 I литерал-1 [ ( литерал-2

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

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

[КОНЕЦ-УМНОЖИТЬ] ментарное данное, за исключением формата 2, в котором любой идентификатор, который появляется только справа от слова GIVING (ПОЛУЧАЯ), должен представлять элементарное число­вое или элементарное числовое редактируемое данное.

  1. Каждый литерал должен быть числовым литералом.

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

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

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

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

  3. Дополнительные правила и пояснения^ относящиеся к это­му оператору, приводятся в соответствующих параграфах (см. ч. 4, п. 6.4.3; ч. 6, пп. 6.4.1, 6.4.2, 6.4.4—6.4.6).

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

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

Оператор PERFORM (ВЫПОЛНИТЬ) используется для явной передачи управления одной или нескольким процедурам и неявного возврата управления после завершения этих процедур. Оператор PERFORM (ВЫПОЛНИТЬ) используется также для управления выполнением одного или более повелительных операторов, находя­щихся в области действия этого оператора PERFORM (ВЫПОЛ­НИТЬ).

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

Ф

J THROUGH I THRU

ормат 1

PERFORM [имя-процедуры-1 [

имя-процедуры-2] ]