($title_img_alt)

こちらからの投稿は、先頭に表示されているコメントへの返信になります。
RPGエラー メッセージID:RPGxxxxのMONMSG監視 けん さん [ 12月19日(月) 10時56分 ]
いつも参考にさせて頂いております。
標記の件で投稿させて頂きます。

下記の様にRPGの「AAA0001」を実行中にRPG1218のエラーが発生したため
システム応答リストのWRKRPYLEに「RPG1218」応答「C」で登録しました。
メッセージ待ちになってしまい自動応答されません。

 CALL       PGM(AAA0001)         
 MONMSG     MSGID(RPG1218) EXEC(DO)

またMONMSGのIDを「RPG9000」に変更した後、再実行したところ
応答待ちになったので「C」を返したら「EXEC(DO)」以降の処理は実行されました。


メッセージIDによっては必ずメッセージ待ちになってしまうのでしょうか。
何か回避する方法ありますでしょうか。

よろしくお願いいたします。
RE:RPGエラー メッセージID:RPGxxxxのMONMSG監視 IKD さん [ 12月22日(木) 9時35分 ]
最初のエラー・メッセージ:RPG1218はRPGプログラム: AAA001に報告されているので
その上位のCLPで MONMSGしても実行スタックが違うので受取れないと思います。
しかしRPG1218を受取ったRPGプログラムがそのことを示すために別のRPG9XXXXを上位の
CLPに送出するのでCLPでMONMSG RPG9000 で受取ることができたのだと思います。
エラー・メッセージIDの種類によることが原因ではないと思います。
RPGの中でもMONMSGは今はできるようになっていますので

 https://www.as400-net.com/rpg/1232/

RPG内部でモニターするようにすればよいと思います。
しかしRPG内部でのエラーは滅多にないことですから
エラーが出ないようにソースを修正するほうが先決です。
RE:RPGエラー メッセージID:RPGxxxxのMONMSG監視 IKD さん [ 12月22日(木) 11時46分 ]
RPG1218はレコードを割り振ることができないというエラーのようです。
これは更新用としてレコードを(恐らくは)CHAINしにいったところ
他のユーザーも更新用として同じレコードを開いていたため
90秒待った結果解放されなかったということてエラーとなっています。
RPG では

   KEY    CHAIN FILE              9099

  のように記述すると標識90=NOT CHAINのときにオンになり
  99=今回のエラーとして割り振ることができなかったときにオンになる。

 のように標識99を割り振ることによってRPG1218の発生を防ぐことができます。
  なお今回のCHAINが必ずしも更新用としてのCHAINでないのであれば

  KEY   CHAIN(N) FILE

  のようにするとCHAIN(N)はCHAINが成功しても直ちにレコードを解放することが
  できます。
  RPG1218が出てしまうとプログラムは異常終了しますので
 エンド・ユーザーに異常終了を見せてしまうのはよくありません。
  ご参考までに。

お名前

パスワード

メールアドレス

タイトル

ホームページ

アドレス

項目