ОШИБКА MS G не отображается в DSPF для AS400

#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. Спасибо. Я знал, что это что-то простое.