Кое-что новое o VARYING

Есть в ABAP кое-какие языковые конструкции, отсутствующие в топовых языках, по крайней мере на базовом уровне, например MOVE-CORRESPONDING.

VARYING – это одна из таких конструкций. Я изредка использовал её в базовом варианте:

Результат предсказуем:

Но как иногда оказывается, у этой конструкции есть две дополнительных глубины.

Во-первых, можно крутить два поля одновременно:

И оказывается так тоже можно, результат не удивит:

А во-вторых, поля в последовательности могут называться как угодно.

Мне раньше казалось, что нумерация в поле очень важна: VAL01, VAL02. Магия! А вот нет. Так тоже можно:

Если чуть подумать, то станет всё понятнее, как оно было заложено и почему. Могу проиллюстрировать на менее интуитивно понятном примере:

Обратите внимание на DO 5 TIMES. Ха-ха? Знаете что произойдёт?

А вот что:

То есть, эта хитрюга просто берет паттерн смещения, длину строки и крутит в цикле. И никакой магии с именами нет. Такая реализация, очевидно, была выбрана потому, что анализ имён – это более трудозатратная операция, чем вычисление смещения.

Получается, конструкция VARYING раскладывается в что-то вроде такого:

Добавить комментарий

Ваш адрес email не будет опубликован.