2017-01-13 1 views
2

У меня есть задание, в котором мне нужно увеличить размер нескольких полей в нескольких программах RPG. Первое, что я делаю, это изменение размера поля в определении (наиболее очевидное). Следующим шагом является поиск всех экземпляров, в которых используется измененное поле (например, назначение другой переменной или арифметических операций), и если размер переменной, которой назначено значение измененной переменной, меньше, переменная приемника увеличивается. Последний шаг состоит в том, чтобы следовать за переменными приемника, указанными на втором шаге, и идентифицировать любые арифметические операции, в которых они используются, и т. Д.Какие вещи нужно соблюдать при изменении размеров переменных RPG-программы?

Кроме того, могут ли более опытные программисты предлагать какие-либо предложения, если что-то большее, сделанный?

ответ

2

В моей текущей позиции мы используем файл ссылки на поле (FRF) для хранения определений полей, которые мы используем. Затем я могу начать с изменения определения в файле ссылки на поле. Если мои определения FRF настроены правильно и используются правильно, осталось бы немного переделать, если перекомпилировать затронутые программы. Теперь определение того, что затронуто, - это еще один чайник из рыбы. Есть инструменты, такие как Hawkeye Pathfinder, которые могут оказать огромную помощь. В противном случае вы вручную просматриваете всю свою базу кода для использования данного поля.

Наконец, вы должны убедиться, что любые экраны 5250 или файлы печати могут успешно содержать расширенные поля. Это может быть не проблема, или может потребоваться переформатирование отображения или отчета.

+0

благодарит за комментарий. У меня есть сомнения в отношении файлов Printer, поскольку я никогда не использовал это раньше. Поэтому я столкнулся с несколькими случаями, когда измененные поля, которые записываются в поля «Файл» принтера меньшего размера. Например, в файле принтера была записана следующая информация: N25 TLAACR 9 2 71 Длина поля TLAACR должна была быть изменена до 15.2 для соответствия исходной переменной. Как это подтвердить? –

+0

Кажется, это бесконечный цикл! поскольку я иду глубже и глубже, есть больше программ и больше полей, которые нужно изменить, чтобы их идентифицировали. Настолько, что я сомневаюсь, что то, что существует, правильно? –

+0

RDi, вы используете RDi, не так ли, имеет редактор файлов печати, который лучше, чем RLU, или вы можете вручную выложить отчет по старому методу на какой-либо графической бумаге. – jmarkmurphy

0

Во многих местах в спецификации определения, рассмотрим, как относительная калибровка может быть полезно:

D ap_asp      +4 like(APASP ) 

В этой спецификации, переменная ap_asp определяется как LIKE) поле (база данных с именем APASP. Поле базы данных определяется как 3P 0, упакованное-десятичное с тремя цифрами и без десятичной дроби. Скомпилированное определение ap_asp является тогда 7P 0, что является четырьмя позициями («+4») больше.

Если APASP изменится в будущем, почти наверняка не нужно будет касаться ap_asp. Его размер будет автоматически регулироваться во время компиляции.

Это не будет работать на все. Например, поле вашего принтера может не измениться. Таким образом, МОНИТОР для назначения только для этого окончательного печатного поля может быть единственным, необходимым в программе.

1

Я бы использовал DSPPGMREF PGM (* USRLIBL/* ALL) OUTPUT (* OUTFILE) OUTFILE (LIB/NAME), когда в моем списке библиотек содержатся все библиотеки, содержащие программы с использованием затронутых файлов. Запросите этот файл, чтобы найти все программы, которые ссылаются на затронутый файл (ы). Сканирование этих программ для всех вхождений затронутых полей. Это сканирование также укажет на любые файлы дисплея или принтера, которые ссылаются на эти поля.

Смежные вопросы