sy-uname написал(а):
Почему обманут - выполнение программы вышло из области действия ООП и выполняется в классическом окружении - так в чём тут обман?
Потому что замена такого кода:
Цитата:
class SomeObject implementation.
method someMethod.
<someAction>. "здесь при компиляции упомянутая ошибка
endmethod.
endclass.
на такой:
Цитата:
class SomeObject implementation.
method someMethod.
perform someForm.
endmethod.
endclass.
form someForm.
<someAction>. "а так все OK
endform.
абсолютно ничего не меняет с точки зрения логики, но почему-то помогает съесть ABAP-у желаемую логику кода в ООП-исполнении. Завтра с работы смогу показать такие примеры, если, конечно, интересно.
sy-uname написал(а):
Да-да, только вот с С++ возможность объявлять переменные там где нужно а не в начале блока преподносилось как громадное достижение в сравнении с классическим С.
Честно говоря, не понял, о чем вы.
sy-uname написал(а):
C++ то-же видать однопроходный, раз требуется объявлять переменные до первого использования.
Во-первых, C++ - компилятор, а ABAP, если не ошибаюсь, интерпретатор. Во-вторых, не понимаю, что вы хотите доказать.
Начали с того, что порядок инициализации переменных в коде программы обычно играет роль в ЯП, кроме а-ля Pascal, где достаточно логичный синтаксис прединициализации переменных. Нашли, что в ABAP порядок инициализации переменных роли не играет. Вы указали на то, что с ABAP-ом все еще плачевнее: как только интепретатор добирается до объявления переменной он делает ее в глобально-видимой (в пределах подпрограммы), казалось бы, остался один шаг до Pascal - сделай интерпретатор первый проход по коду подпрограммы для сбора всех объявлений переменных, а только после этого проход для выполнения кода - и приведенный вами пример исполнится. Так нет же...
