#ibm-midrange #rpgle
#ibm-средний диапазон #rpgle
Вопрос:
У меня есть файл отображения с кодом, подобным следующему:
A DSPSIZ(24 80 *DS3)
A PRINT
A ERRSFL
A INDARA
...
A R DSPBTM
A CF05
A CF01
A CF07
A OVERLAY
...
A NEWFLD R B 12 12REFFLD(FLE/MYFIELD FIELDSFILE)
A 40 DSPATR(PR)
A EDTCDE(Z)
A 59 ERRMSG('New field and Original fiel-
A d must be different.' 59)
...
И соответствующий код RPG:
...
//If the old field and the new field are the same, error.
if oldfld = newfld;
*in59 = *on;
iter;
endif;
...
Во время отладки я проверил, что прямо перед exfmt включен *in59 . Однако, когда отображается экран, я ничего не получаю. Сообщение об ошибке не появляется, поле не выделяется, оно действует так, как будто это обычный цикл без ошибок.
У меня есть другие ошибки при использовании ERRMSGID, и они работают. Тем не менее, я хотел бы избежать необходимости использовать файл сообщений, поскольку это то, что, вероятно, будет использовано только один раз.
Мне еще предстоит найти какие-либо онлайн-ресурсы, которые помогли. Некоторые учебные пособия, казалось, были в правильном направлении (например, этот), но все еще не устранили проблему.
Ответ №1:
После изменения состояния *IN59 необходимо выполнить ЗАПИСЬ в формат записи DSPBTM.
Комментарии:
1. Спасибо. Я знал, что это что-то простое.