- ベストアンサー
RPGでメッセージファイル利用
AS400初心者です。 RPGのプログラムにてメッセージファイルを利用するにはどのようにしたら良いのでしょうか? たとえば・・・ (RPG) 'メッセージID’CHAIN メッセージファイル 'メッセージファイルのFIELD?' MOVEL ’画面のFIELD?’ あるいは RPGからCLを呼び出して・・ (CL) SNDMSG メッセージID メッセージファイル 取得したメッセージを何らかの方法でRPGに返す? 初心者で質問の仕方も悪いかもしれませんが、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
パラメータを渡すというのは、「○件データが更新 されました」の○の部分の数値をその都度変化 させたいという事でしょうか。 現在取り扱っているシステムではメッセージがすべて 固定になっていてそこまでの事はしていないです。 できるかどうかもわかりません。 少し考えてみたのですが次の方法はいかがでしょう。 画面ファイル WSMSG1 4A O 24 2DSPATR(HI BL) WSMSG 68A O 24 9DSPATR(HI BL) 配列 E TB1 1 2 4 E TB2 1 2 68 変数部分設定 C MOVE AAAA WSMSG1 キー取得 C MOVE '1003' MSGKEY メッセージ表示 C MSGKEY LOKUPTB1,M 88 C *IN88IFEQ '1' C MOVE TB2,M WSMSG C ENDIF ** TB1 ERR1 1003 ** TB2 ERR1 得意先マスタに登録されていません。 1003 更新完了 ※メッセージファイルを使用せず、RPGの中で 直接メッセージを指定する方法です。
その他の回答 (2)
- taranko
- ベストアンサー率21% (516/2403)
画面ファイルがRPGにある場合はこれで大丈夫です 画面ファイルがCLにある場合はエラーフラグを 作成し、RPGにフラグを渡しエラーの時に メッセージを出す(パラメータの指定はCLでする) DCL VAR(&EFLG) TYPE(*CHAR) LEN(1) VALUE('0') IF COND(&IN01 *EQ '1') THEN(DO) CALL PGM(ライブラリ/プログラム) PARM(&EFLG &WSHAID) IF COND(&EFLG *EQ '1') THEN(DO) CHGVAR VAR(&CMIC) VALUE('E004') CHGVAR VAR(&IN30) VALUE('1') GOTO START ENDDO 以上の方法と直接RPGからIDを取得する為の パラメータを渡す方法があります。 DCL VAR(&PACMIC) TYPE(*CHAR) LEN(4) VALUE(' ') CALL PGM(プログラム) PARM(&PAERR &PACMIC) IF COND(&PAERR = '1') THEN(DO) CHGVAR VAR(&CMIC) VALUE(&PACMIC) GOTO START ENDDO 一応、上はエラーフラグも渡し、エラーの時のみ パラメータで渡したIDを取得する方法です。
補足
返事遅れてすみません。 >画面ファイルがRPGにある場合はこれで大丈夫です。 のこれは何処にあたるでしょうか? 当方、画面はRPG側に存在し、処理後、画面下に &1 件のデータが更新されました。 と出したいですが上記拝見して理解できなかったです。 すみません。 現在は、taranko のNO1の回答のおかげで ’ ’件のデータが更新されました。 まで表示可能です。
- taranko
- ベストアンサー率21% (516/2403)
1つの例ですが 画面ファイル WSMSG 79A O 24 1MSGID(USR &CMIC OHAIMSGF) RPGの場合 MOVEL'E004' CMIC CLの場合 CHGVAR VAR(&CMIC) VALUE('E004') このようにしてメッセージファイルのメッセージを 取得して表示しています。
お礼
ありがとうございます。 上記のように試したところできました。 そこでつづけて質問したいのですが、 RPGからメッセージIDの指定方法はわかったのですが メッセージファイルパラメータはどのようにして渡せば よいのでしょうか??
お礼
早速のレスありがとうございます。 しばらく試すことができないかもしれませんが 結果を後ほどご報告いたします。 以前はLANSAを使って開発してたものですからRPGになると 結構わずらわしさを感じたりもします。