Почему *inlr (индикатор последней записи) включается в конце программы rpgle

*inlr (индикатор последней записи) включается в конце программы rpgle. Что является основной причиной включения индикатора последней записи. Что произойдет, если этот индикатор не будет включен.


person Kunal Roy    schedule 29.01.2021    source источник


Ответы (1)


Вам не всегда нужно включать этот индикатор. Иногда вы можете просто написать RETURN, чтобы завершить программу.

*inlr является частью цикла RPG, который используется модулями цикла. Если в ваших операторах Control нет ключевого слова MAIN или NOMAIN, это циклический модуль.

На этой странице документации рассказывается о трех типах модулей RPG и описывается, как *inlr влияет на модуль цикла. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzasd/cycvslinear.htm

person Barbara Morris    schedule 29.01.2021
comment
Я подчеркиваю важность *INLR и RETURN по сравнению с настройками компилятора в отношении групп активации. Неожиданное сохранение состояния может произойти при неправильном использовании. :-) - person PoC; 31.01.2021
comment
Насколько я понимаю, в циклической программе, которая была запущена из другой программы, если вы вызовете RETURN без установки на *INLR, то вторая программа останется загруженной в памяти, и если вы вызовете ее снова, вы получите не новый экземпляр, а будет запускать тот же экземпляр программы, и ваши значения переменных, открытые файлы и т. д. все еще будут там. Вы можете это подтвердить? - person Mike; 01.02.2021
comment
Майк, ты прав. Но это не обязательно циклическая программа. Это может быть циклический модуль. Программа может иметь несколько модулей цикла, каждый со своим собственным циклом RPG. Но верно то, что в большинстве программ есть только один модуль цикла, а в большинстве служебных программ модулей циклов нет. - person Barbara Morris; 03.02.2021
comment
Однако то, что сказал PoC, также актуально. Если программа работает в группе активации *NEW, не имеет значения, завершаете ли вы свои модули цикла с включенной или выключенной *INLR. Файлы будут закрыты, когда программа завершится. В следующий раз, когда вы вызовете программу, переменные будут иметь свое начальное значение. - person Barbara Morris; 03.02.2021