H DFTNAME(TESTERRM) DFTACTGRP(*NO) H DEBUG(*YES) FJUCHU IF E K DISK FTOKMAS IF E K DISK * オメ. * CALL TESTERRM ('AA' X'123F') -> ヘマウウオヘヘ. * CALL TESTERRM ('AA' '123F') -> カアケツ(Eメウオニホケナト キオトオネアホケトキ). * * Pアネアテオホオネヘ カナネ ホクケヘ ニネナキネアテ. D TESTERRM PR D P1 2 D P2 3 0 * D TESTERRM PI D P1 2 D P2 3 0 * * Pアネアテオホオネヘ カナネ Sオトエ Mオヘヘアキオ. DSNDMSG ニネ D MSGTXTホ 80 CONST * DMSG S 52 DIM(4) CTDATA PERRCD(1) DP2CHR S 3 * * プログラム状況データ構造 DEメウニDヘ SDS D* ステートメント番号 D* | CRTBNDRPG OPTION(*SRCSTMT) にするとソースと同じ行になる D STMT 21 28 D* 例外タイプ (CPF または MCH) D オメウニTモニオ 40 42 D* 例外番号 (CPF または MCH の下 4 桁の英数字 ) D オメウニNマテ 43 46 * /カネオオ *INLR = *ON; MONITOR; P2CHR = %CHAR(P2); // 数値を文字に DSPLY P1; DSPLY P2CHR ; DSPLY テヘキ(1); // // Eメウオニホケナト クアトエツケトキ イモ Mナトケホナネ. // エラー・コードは RPG 解説書を参照 ON-ERROR; SELECT; WHEN %STATUS = 222; DSPLY MSG(3); WHEN %STATUS = 907; DSPLY MSG(4); OTHER; DSPLY MSG(2); ENDSL; CALLP SNDMSG('Aト オネネナネ ムアヘ ' + オメウニTモニオ + オメウニNマテ + '. Sホアホオテオトホ=' + ヘホテホ ); ENDMON; RETURN; /END-FREE * * メッセージ送信処理 * PSNDMSG B DSNDMSG PI D INPTEXT 80 CONST * Sオトエ テオヘヘアキオ API ニアネアテオホオネヘ D MSGID ヘ 7 INZ('CPF9898') D MSGFILLIB ヘ 20 INZ('QCPFMSG *LIBL ') D MSGDATA ヘ LIKE(INPTEXT) D MSGDATALEN ヘ 10ケ 0 INZ(%SIZE(MSGDATA)) D MSGTYPE ヘ 10 INZ('*INFO') D MSGSTACKENT ヘ 10 INZ('*') D MSGSTACKCNT ヘ 10ケ 0 INZ(3) D MSGKEY ヘ 4 D MSGERRSTRUC ヘ LIKE(ERRSTRUC) * API オネネナネ ヘホネマウホマネオ D ERRSTRUC DS INZ D ERRSSIZE 10ケ 0 INZ(%LEN(ERRSTRUC)) * D ERRSUSE 10ケ 0 * D ERRSMSGID 7 * D ERRSRESRV 1 * D ERRSDATA 80 * C EVAL MSGDアホア = INPTEXT C EVAL MSGERRSTRUC = ERRSTRUC *-------------------------------------------------------------- C CALL 'QMHSNDPM' C PARM MSGID C PARM MSGFILLIB C PARM MSGDATA C PARM MSGDATALEN C PARM MSGTYPE C PARM MSGSTACKENT C PARM MSGSTACKCNT C PARM MSGKオモ C PARM MSGERRSTRUC *-------------------------------------------------------------- C EVAL ERRSTRUC = MSGERRSTRUC P E ** 状況 (00000): 正常終了。 状況 (-----): 何らかのエラーあり。要デバッグ。 状況 (00222): ポインターまたはパラメータのエラー。 状況 (00907): 10 進数エラーです。