Вопрос

Вот моя ситуация: у меня есть программа A, которая выглядит так:

Fmfile, если EK Disk USROPN D GRUE S ARTE (DHSEQN) D C * Ввод Plist C Parm Grue C Открыть mfile c *** сделать что-нибудь с grue c Закройте mfile c eval * inlr = * на

DHSEQN - это поле 2,0 с.

Список компиляций показывает мне это:

 * RNF7031 DHSEQN P (2,0) 000200 1000002D GRUUE P (2,0) 000200D 000500m 000700 000800M на основе (_qrnl_prm +)

И когда я вызываю программу A с параметром, который был объявлен 2,0 с, я получаю десятичную ошибку данных.

Это ожидается, или этот компилятор ошибка?

Это было полезно?

Решение

Компилятор RPG (даже до ILE) преобразует поля базы данных на упаковку. Иногда вы обнаружите, что он не найден, например, поле зона файла останутся зонированием, если вы используете его в структуре данных, но каждое зонированное поле того же файла вы не станете упаковываемым.

Если вам действительно нужно понравиться из файлового поля, определите структуру фиктивных данных, чтобы сохранить его зонирование.

Еще лучше, если ваш параметр ввода не изменен, определите его в прототипе программы с ключевым словом PORD, а тип будет преобразован автоматически, даже принимая выражения и константы!

Вот действительно хорошо статья Об использовании Const On Procenter Prototyps и автоматического преобразования.

Другие советы

«S» в определении GRUE не относится к типу данных, а скорее определяет его как «автономное» поле. Тип данных для GRUUE указывается как (DHSeqn), который ваш список компиляций показывает как p (2,0).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top