Условная компиляция в RPG(LE)
-
18-09-2019 - |
Вопрос
Могу ли я включить участок кода в зависимости от того, определена ли переменная в моей программе, или препроцессор совершенно не может получить доступ к этой информации, только условия компиляции?Т.е.Мне нужно что-то вроде:
/IF DEFINED(myVariable)
D myOtherVariable S like(myVariable)
/ELSE
D myOtherVariable S 20A
/ENDIF
Этот связь кажется, что это невозможно.Если да, то знает ли кто-нибудь другой способ добиться этого?
Решение
Было бы неплохо иметь эту функцию, но, к сожалению, сегодня она так не работает.Значение в скобках после DEFINED должно быть определенным. название условия, а не имя переменной.Чтобы это работало, нужно использовать директиву /DEFINE всякий раз, когда вы определяете эту конкретную переменную в любой программе или тетради.Все зависит от использования в этих ситуациях, насколько это рекомендуемая практика.
Ссылка, представленная в вашем вопросе, точна, и я согласен с выводами.
Другие советы
В качестве дополнительной подсказки используйте для этого предмета книги по программированию на языке C, а не книги IBM RPGLE.В книгах IBM описывается, что можно сделать с помощью директив.Книги C описывают, как он используется в реальных программах (например.Linux-программы с открытым исходным кодом).Следование этому стилю сделает ваши исходные коды RPG более читабельными для других программистов.