В настоящее время я исправляю существующую программу RPG. Цель состоит в том, чтобы установить индикатор так, чтобы этот индикатор активировал атрибут отображения ND в файле отображения, чтобы скрыть поле. Проблема в том, что все индикаторы общего назначения IN01~IN99 были израсходованы, и я не могу повторно использовать ни один из них, не нарушая существующий ход программы. Можно ли вместо этого использовать внешний индикатор U1~U8? Если это невозможно, есть ли другая альтернатива? Или я просто облажался?
Можно ли использовать внешний индикатор для активации атрибута отображения в файле отображения?
Ответы (2)
Рассмотрите возможность использования программы для системного поля вместо индикатора. http://wiki.midrange.com/index.php/Program_To_System_Fields
Другая возможность заключается во внешнем отображении всех индикаторов файла отображения с помощью ключевого слова DDS INDARA http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzakc%2Frzakcmstdfindar.htm.
Проверьте использование каждого индикатора 01-99, чтобы определить, сможете ли вы освободить их для использования в вашем файле дисплея.
ЕСЛИ какие-либо из них используются только для управления потоком программы и не участвуют напрямую в файлах отображения, файлах печати, I-спецификациях или O-спецификациях, ТОГДА вы можете заменить ее использование переменной типа индикатора. Объявите переменную с внутренним типом данных N (позиция 40 вашей D-спецификации) в качестве поля формата индикатора символа. Используйте эту переменную вместо индикатора, который используется только для управления ходом выполнения программы.
Если таких индикаторов нет, то, вероятно, вам следует использовать один из методов, рекомендованных Баком.
В качестве альтернативы в старом стиле вы можете сохранить весь массив индикаторов *IN в области хранения, временно повторно использовать некоторые индикаторы ввода-вывода, а затем снова поместить область хранения в массив индикаторов. У вас может быть несколько структур с 99 индикаторами, которые вы перемещаете в *IN или загружаете из *IN в подходящее время. У вас может быть одна такая структура для каждого формата записи, которую вы переместите в *IN прямо перед вводом-выводом в этом формате записи и загрузите обратно после ввода-вывода. Это дает вам почти бесконечное количество индикаторов в вашей программе, хотя по-прежнему ограничено 99 для каждого формата отображения.