Я довольно уверен после нескольких лет поиска, что это невозможно, но я все равно спрошу.AS400 RPGLE/свободные динамические переменные в операциях
Вопрос в том, можно ли использовать динамическую переменную в операции, если вы не знаете имя поля. Например, у меня есть структура данных, содержащая несколько сотен полей. Оператор выбирает одно из этих полей, и программе необходимо знать, какие данные находятся в поле из переданной структуры данных. Итак, мы скажем, что существует 100 полей, а field50 - это то, на что оператор решил работать. Программа будет передана в поле имени (то есть поле 50) в переменной FLDNAM. Программа будет читать что-то вроде этого обычным способом:
/free
if field50 = 'XXX'
// do something
endif;
/end-free
Проблема заключается в том, что я бы закодировать это в 100 раз для каждой операции. Например:
/free
if fldnam = 'field1';
// do something
elseif fldnam = 'field2';
// do something
..
elseif fldnam = 'field50';
// do something
endif;
Есть ли какой-либо возможный способ выполнения операции в поле, которое еще не известно? (то есть IF FLDNAM (данные указателя) = 'XXX', затем что-то делать)
RPG - это строго типизированный язык. Поля должны быть определены заранее, и имя поля никогда не известно программе таким образом, что вы можете получить или указать динамически. Не могли бы вы использовать массив или все поля разные? – jmarkmurphy
Привет. Спасибо за ответ. Я думал об использовании массива, если требуется, только для более быстрой обработки. Я бы начал загружать область данных, а также массив имен полей, а затем и позиционный массив. Код может стать довольно сложным техническим обслуживанием, но это мой план резервного копирования, если вы не можете использовать динамические переменные. Все поля различной длины, некоторые из них упакованы в десятичные числа и т. Д. Я знаю, что можно заставить его работать с массивами, но я решил проверить и посмотреть, есть ли другие варианты. – user1420914
Абсолютно это можно сделать. Подумайте о запросе. Знает ли он, какие поля вы хотите, прежде чем начать? Может ли это помочь вам выбрать поля? – danny117