Cobol Reference Modification: Что именно делает «Перемещение MOVE (Variable + literal: literal) TO Variable»? - PullRequest
0 голосов
/ 07 сентября 2018

Есть одна вещь, которую я не понимаю в ссылочной модификации в Cobol.

Пример выглядит так:

MOVE VARIABLE(VARIABLE2 +4:2) TO VARIABLE3

Теперь я не понимаю, на что ссылается «+4: 2». Означает ли это, что первые два знака через 4 знака после цели перемещаются? Это означает, что если, например, VARIABLE (1-е) заполнено "123456789", а VARIABLE2 содержит 2-ю и 3-ю позиции в этой переменной (т. Е. "23"), целью является "23 + 4", что означает "789". Затем первые две позиции в цели (обозначенные ": 2") перемещаются в VARIABLE3. Таким образом, в конце VARIABLE3 будет содержать «78».

Понимаю ли я это право или делаю ложное предположение об этой инструкции?

1 Ответ

0 голосов
/ 07 сентября 2018

(VARIABLE2 +4:2) - синтаксическая ошибка, потому что начальная позиция должна быть арифметическим выражением. Должен быть пробел после +, чтобы этот reference modification был действительным. И, VARIABLE2 должно быть числовым, а выражение должно быть целым числом.

После исправления добавляется 4 к содержанию VARIABLE2. Это крайняя левая (или начальная позиция) в пределах VARIABLE1 для хода. 2 символы перемещаются в VARIABLE3. Если VARIABLE3 длиннее двух символов, оставшиеся позиции заполняются пробелами.


По стандарту COBOL 2002 года:

8.7.1 Арифметические операторы

Существует пять двоичных арифметических операторов и два унарных арифметических оператора, которые могут использоваться в арифметических выражениях. Они представлены определенными символами COBOL, которым перед должен стоять пробел, а за ним следует пробел , за исключением того, что между левой скобкой и унарным оператором или между унарным оператором и левой скобкой не требуется пробела.

Акцент добавлен.

...