メッセージ待ち行列変更 (CHGMSGQ)

メッセージ待ち行列変更(CHGMSGQ)コマンドは,指定されたメッセージ待ち行列の属性を変更します。転送モードが*BREAKまたは*NOTIFYに変更されているところで,メッセージ待ち行列が既に*BREAKまたは*NOTIFYモードになっていないか,別のジョブに明確に割り振られたりしていない場合は,このコマンドによって暗黙に割り振られます。DLVRY, PGM,およびSEVパラメーターはメッセージ待ち行列作成(CRTMSGQ)コマンドには含まれていませんが,メッセージ待ち行列の作成時にシステムによってこれらのパラメーターに省略時の値が割り当てられます。このコマンドはまた,古いメッセージの状況を新しいメッセージの状況にリセットして,メッセージ参照キーを使わなくても再びメッセージを受け取れるようにするために使用することもできます。

制約事項:

  1. 待ち行列に対する使用(*USE)および削除(*DLT)権限が必要です。
  2. 変更されるメッセージ待ち行列は,別のジョブによる*SHRRDまたは*EXCLロックで割り振ることはできません。CHGMSGQコマンドが試みられた時に別のジョブによってこの待ち行列が割り振られた場合には,エラー・メッセージが送られます。これに対する1つの例外は,ワークステーション・メッセージ待ち行列のCCSIDを変更する時にはロックが不要であるということです。
  3. 総称サポートを使用して複数のメッセージ待ち行列を変更している場合には,DLVRYパラメーターの値を*BREAKまたは*NOTIFYに変更することは許可されません。
  4. QHSTメッセージ待ち行列のメッセージ待ち行列満杯時の処置は*SNDMSGであり,この値を変更することはできません。QHSTのメッセージ待ち行列満杯時の処置が変更されると,CPF2433メッセージ(機能はシステム・ログ・メッセージ待ち行列QHSTに使用できない)が出されます。
  5. メッセージ待ち行列QSYSOPRは,「メッセージ待ち行列満杯時の処置」が*WRAPとして出荷されます。値を*SNDMSGに変更した後で,損傷したために待ち行列を再作成する必要がある場合には,その値は出荷時の値の*WRAPにリセットされます。

パラメーター

キーワード 記述 選択項目 ノーツ
MSGQ MSG 待ち行列 単一値: *USRPRF, *WRKSTN
その他の値: 修飾オブジェクト名
必須, 定位置 1
修飾子 1: MSG 待ち行列 総称名, 名前, *ALL
修飾子 2: ライブラリー 名前, *LIBL, *CURLIB, *USRLIBL, *ALLUSR, *ALL
DLVRY 配布 *SAME, *HOLD, *BREAK, *NOTIFY, *DFT オプショナル, 定位置 2
SEV 重大度コード・フィルター 0-99, *SAME オプショナル, 定位置 4
TEXT テキスト'記述' 文字値, *SAME, *BLANK オプショナル
PGM ハンドル属性の中断 単一値: *SAME, *DSPMSG
その他の値: 要素リスト
オプショナル, 定位置 3
要素 1: 中断処理プログラム 修飾オブジェクト名
修飾子 1: 中断処理プログラム 名前
修飾子 2: ライブラリー 名前, *LIBL, *CURLIB
要素 2: 他のジョブが応答可能 *NOALWRPY, *ALWRPY
RESET 古いメッセージのリセット *NO, *YES オプショナル
FORCE 補助記憶域への強制書き込み *SAME, *NO, *YES オプショナル
ALWALR 警報可能 *SAME, *NO, *YES オプショナル
CCSID コード化文字セットID 1-65535, *SAME, *MSG, *HEX, *JOB オプショナル
MSGQFULL メッセージ待ち行列満杯時処置 *SAME, *SNDMSG, *WRAP オプショナル

MSG 待ち行列 (MSGQ)

属性を変更するメッセージ待ち行列の名前を指定します。

これは必須パラメーターです。

単一値

*WRKSTN
ワークステーションのメッセージ待ち行列の属性が変更されます(このパラメーターは,バッチ・ジョブの場合は使用できません)。
*USRPRF
現行のユーザー・プロファイルに関連したメッセージ待ち行列の属性が変更されます。

修飾子1: MSG 待ち行列

*ALL
ライブラリー修飾子で識別されるライブラリー中のすべてのメッセージ待ち行列が変更されます。
総称*メッセージ待ち行列名
属性を変更するメッセージ待ち行列の総称名を指定してください。総称名は1つまたは複数の文字の後にアスタリスク(*)を付けた文字ストリング(例えば,ABC*など)です。アスタリスク(*)は任意の有効な文字の代わりをするものです。総称名は,ユーザーが権限をもち,総称接頭部で始まる名前をもつすべてのオブジェクトを指定します。総称(接頭部)名にアスタリスクが入っていなければ,システムはその名前を完全なオブジェクト名と見なします。完全なオブジェクト名を指定して,ライブラリー修飾子が*USRLIBL, *ALL,または*ALLUSRである場合には,指定した名前のすべてのメッセージ待ち行列が変更されます。
名前
属性を変更するメッセージ待ち行列の名前を指定してください。

修飾子2: ライブラリー

*LIBL
最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
*CURLIB
メッセージ待ち行列を見つけるために,ジョブの現行ライブラリーが使用されます。ライブラリー・リストに現行ライブラリー項目が存在しない場合には,QGPLが使用されます。
*USRLIBL
スレッドのライブラリー・リストのユーザー部分のライブラリーだけが検索されます。
*ALL
システムにあるすべてのライブラリー(QSYSを含む)が検索されます。
*ALLUSR
すべてのユーザー・ライブラリーが検索されます。次のものを除き,英字Qで始まらない名前のすべてのライブラリーが検索されます。

#CGULIB     #DSULIB     #SEULIB
#COBLIB     #RPGLIB
#DFULIB     #SDALIB

次のQXXXライブラリーは弊社提供のものですが,一般的に,これらにはよく変更されるユーザー・データが入ります。したがって,これらのライブラリーは「ユーザー・ライブラリー」と見なされ,検索されます。

QDSNX       QRCLXXXXX   QUSRDIRDB   QUSRVI
QGPL        QSRVAGT     QUSRIJS     QUSRVXRXMX
QGPL38      QSYS2       QUSRINFSKR
QMGTC       QSYS2XXXXX  QUSRNOTES
QMGTC2      QS36F       QUSROND
QMPGDATA    QUSER38     QUSRPOSGS
QMQMDATA    QUSRADSM    QUSRPOSSA
QMQMPROC    QUSRBRM     QUSRPYMSVR
QPFRDATA    QUSRDIRCF   QUSRRDARS
QRCL        QUSRDIRCL   QUSRSYS

  1. 'XXXXX'は1次補助記憶域プール(ASP)の番号です。
  2. 前のリリースのCLプログラム内でコンパイルされるユーザー・コマンドを入れるために,弊社がサポートする前の各リリース用にQUSRVXRXMXの形式の別のライブラリー名を作成することができます。QUSRVXRXMXユーザー・ライブラリーのVXRXMXは弊社が引き続きサポートしている前のリリースのバージョン,リリース,およびモディフィケーション・レベルです。
名前
メッセージ待ち行列が入っているライブラリーを指定してください。

配布 (DLVRY)

このメッセージ待ち行列に送られるメッセージを転送する方法を指定します。メッセージ待ち行列がジョブに割り振られている限り,この転送方法が有効となります。待ち行列がもはや割り振られていない時には,ワークステーション,システム操作員,およびユーザー・メッセージ待ち行列に対して転送モードは*HOLDに変更されます。ただし,システム操作員メッセージ待ち行列またはユーザー・メッセージ待ち行列に*DFTが指定されている場合には,転送モードは*DFTのままになります。

注: メッセージ待ち行列の転送モードが*BREAKまたは*NOTIFYに変更されると,メッセージ待ち行列は*EXCLロック付きで割り振られます。*EXCLロックは,転送モードが*HOLDまたは*DFTに変更されるか,待ち行列上のロックを含んでいるジョブが終了するまで,待ち行列で維持されます。

*SAME
メッセージの転送方法は変更されません。このパラメーターが前のコマンドで変更されていない場合には,*SAMEは,*HOLDが転送方法であることを意味します。しかし,指定されたメッセージ待ち行列が表示装置メッセージ待ち行列である場合には,システムによってサインオン時に自動的に*NOTIFYに変更されます。
*HOLD
メッセージは,ユーザーまたはプログラムによって要求されるまで,メッセージ待ち行列の中に保留されます。表示装置ユーザーは,メッセージ表示(DSPMSG)コマンドを使用して,メッセージを表示します。プログラムは,メッセージ受信(RCVMSG)コマンドを発行して,メッセージを受け取って処理する必要があります。
*BREAK
メッセージがメッセージ待ち行列に到着すると,そのメッセージ待ち行列が割り振られているジョブは中断され,中断処理プログラム (PGM)パラメーターに指定されたプログラムが呼び出されるか,あるいはメッセージ表示(DSPMSG)コマンドが処理されます。ジョブが対話式ジョブの場合には,音響アラームが鳴ります(導入済みの場合)。メッセージ待ち行列が別のジョブによっても使用されている場合には,転送モードを*BREAKに変更することはできません。

*BREAKモードに変わると,プログラム名が指定されていない場合,またはPGM(*SAME)が指定されている場合には,PGMパラメーターは,省略時の値として,中断プログラムに対して*DSPMSGが使用され,他のジョブの応答を許可属性に対して*ALWRPYが使用されます。

*NOTIFY
メッセージがメッセージ待ち行列に到着した時に,メッセージ待ち行列が割り振られる対話式ジョブに,メッセージ・ライトがオンにかわるか,またはブザーの音(その機能がある場合)によって通知されます。バッチ・ジョブの場合は,通知は行われず,(*HOLDと同様に)メッセージは待ち行列内で保留されるだけです。メッセージ待ち行列が別のジョブによって使用されている場合には,転送モードを*NOTIFYに変更することはできません。
*DFT
応答を必要とするメッセージには,省略時の応答によって応答されます。照会メッセージのメッセージ記述に省略時の応答が指定されていない場合には,システムの省略時の応答の*Nが使用されます。メッセージ待ち行列がQSYSOPRでない限り,メッセージ待ち行列にメッセージは追加されません。

重大度コード・フィルター (SEV)

中断または通知モードでユーザーに転送することができる最低のメッセージの重大度レベルを指定します。重大度がここに指定されているよりも低いメッセージがメッセージ待ち行列に到着する際には,ジョブを中断せず,音響アラームおよびメッセージ待機ライトをオンにもしません。メッセージ表示(DSPMSG)コマンドによって表示されるまで,待ち行列に保留されています。DLVRYパラメーターに*BREAKまたは*NOTIFYが指定されており,それがメッセージが待ち行列に到着したときに有効になっている場合には,メッセージに関連した重大度コードがここで指定された値以上であれば,メッセージは配信されます。そうでない場合には,メッセージは要求されるまで待ち行列に保留されます。

*SAME
重大度コードは変更されません。
重大度コード
メッセージが持つことができ,メッセージ待ち行列が中断または通知転送モードの場合には,ユーザーに転送される最低の重大度コードを0から99の値で指定してください。

テキスト'記述' (TEXT)

メッセージ待ち行列を記述するユーザー定義のテキストを指定します。前のテキストがあれば,ここで指定されたテキストがそれに置き換わります。

*SAME
テキストは変更されていません。
*BLANK
テキストは指定されません。
'記述'
50文字以下をアポストロフィで囲んで指定します。

ハンドル属性の中断 (PGM)

プログラム・パラメーターを指定するために2つの要素が使用されます。最初の要素は,メッセージがメッセージ待ち行列に到着し,中断転送が指定されていた場合に呼び出されるプログラムを指定します。2番目の要素は,メッセージ待ち行列が*BREAK転送モードになり,*DSPMSG以外の中断処理プログラムが指定されていた場合に,他のジョブがそのメッセージ待ち行列上のメッセージに応答できるかどうかを指示します。

QSYSOPRメッセージ待ち行列は操作員の手動処置を必要とするメッセージを受け取るので,変更されるメッセージ待ち行列がQSYSOPRの場合には,*DSPMSGのみが指定または想定されるようにしなければなりません。

次のパラメーターがプログラムに渡されます。

単一値

*SAME
同じプログラムが,もしあれば,呼び出されます (このパラメーターが別のメッセージ待ち行列変更(CHGMSGQ)コマンドで前に変更されていない場合は,*SAMEは,*DSPMSGおよび*ALWRPYが想定されることを意味します)。*BREAKモードに変更すると,このパラメーターが指定されていない場合,または*SAMEが指定されている場合は,中断プログラムは,省略時の値として*DSPMSGが使用され,他のジョブの応答を許可の値は*ALWRPYに設定されます。
*DSPMSG
メッセージが中断転送中に到着し,他のジョブの応答を許可の値が*ALWRPYに設定されていると,メッセージ表示(DSPMSGコマンド)が処理されます。対話式ジョブの場合には,メッセージは画面に表示されます。表示装置で,音響アラームが鳴り(導入済みの場合),メッセージ待機中ライトがオンになります。バッチ・ジョブの場合には,メッセージはスプール印刷装置ファイルに送られます。

要素1: 中断処理プログラム

中断転送の場合にメッセージが到着した時に呼び出されるプログラムを指定します。

修飾子1: 中断処理プログラム

名前
呼び出されるプログラムの名前を指定してください。

修飾子2: ライブラリー

*LIBL
最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
*CURLIB
プログラムを見つけるために,ジョブの現行ライブラリーが使用されます。ライブラリー・リストに現行ライブラリー項目が存在しない場合には,QGPLが使用されます。
名前
プログラムが入っているライブラリーを指定してください。

要素2: 他のジョブが応答可能

メッセージ待ち行列が*BREAK転送モードになり,*DSPMSG以外の中断処理プログラムが指定されていた場合に,他のジョブがそのメッセージ待ち行列上の照会メッセージに応答できるかどうかを指定します。中断処理プログラムに*DSPMSGが指定されていると,この属性には*ALWRPYが想定されます。QSYS以外のライブラリーで中断処理プログラムにQMHDSMSSが指定されている場合にも,*NOALWRPYが明示的に指定されていない限り,この属性には*ALWRPYが想定されます。

:この要素に値を指定する場合には,このパラメーターの要素1にも中断処理プログラムを指定しなければなりません。

*NOALWRPY
*DSPMSGが指定されたもの以外の中断処理プログラムによってメッセージ待ち行列が*BREAK転送モードになっている時に,他のジョブは,メッセージ待ち行列上を表示できますが,メッセージ待ち行列上の照会メッセージに応答することはできません。
*ALWRPY
*DSPMSGが指定されたもの以外の中断処理プログラムによってメッセージ待ち行列が*BREAK転送モードになっている時に,他のジョブは,メッセージ待ち行列上の照会メッセージに応答することができます。

古いメッセージのリセット (RESET)

メッセージ待ち行列に保留中の古いメッセージ(一度受け取ってその後メッセージ待ち行列から除去されなかったメッセージ)を新しいメッセージ状況にリセットするかどうかを指定します。そして,メッセージは,元の通りにFIFO(先入れ先出し)順で受け取ることができます。このパラメーターは,プログラムが受け取るメッセージにのみ適用されます。メッセージの表示は影響を受けません。すべてのメッセージを消去する場合には,RMVMSG(メッセージ除去)コマンドの説明を参照してください。

*NO
メッセージ待ち行列の中の古いメッセージは,新しいメッセージ状況にリセットされません。古いメッセージを受け取ったり,それに応答したり,それを除去したりするためには,メッセージ参照キーを入力しなければなりません。
*YES
メッセージ待ち行列の中のすべてのメッセージは,既に応答が送られている照会メッセージを除いて新しいメッセージ状況にリセットされます。そして,これらのメッセージは,メッセージ待ち行列に送信されたのと同じ順序で,新しいメッセージとして受け取ることができます。

補助記憶域への強制書き込み (FORCE)

メッセージ待ち行列記述に施された変更,または待ち行列に追加または待ち行列から除去されたメッセージをただちに補助記憶装置に強制記憶するかどうかを指定します。これによって,たとえシステム障害が起こっても,待ち行列に対する変更または送受したメッセージが失われないようにすることができます。

*SAME
参照されたメッセージ待ち行列の中で指定された値は変更されません。
*NO
メッセージ待ち行列およびその中のメッセージに対して施された変更は,すぐには補助記憶装置に強制記憶されません。
*YES
メッセージ待ち行列記述および待ち行列の中のメッセージに対する変更は,すべてただちに補助記憶装置に強制記憶されます。警告: この結果,パフォーマンス上の問題となる可能性があります。

警報可能 (ALWALR)

変更する待ち行列がそこに送られる警報メッセージから警報が生成されることを許可するかどうかを指定します。

*SAME
値は変更されません。
*NO
このメッセージ待ち行列から警報が生成されることを許可しません。
*YES
このメッセージ待ち行列から警報が生成されることを許可します。

コード化文字セットID (CCSID)

このメッセージ待ち行列と関連付けられているコード化文字セットID (CCSID)を指定します。これは,即時メッセージと,変換可能な文字フィールド(*CCHAR)として定義されているメッセージ・データにのみ,適用されます。

*SAME
値は変更されません。
*HEX
このメッセージ待ち行列に送られたり,このメッセージ待ち行列から受け取ったり,このメッセージ待ち行列から表示されるメッセージは,変換されません。このメッセージ待ち行列のCCSIDは65535です。
*MSG
このメッセージ待ち行列に送られたメッセージは変換されません。表示または受信機能で変換が必要になる場合に備えて,送信元ジョブによって指定されたCCSIDが保管されます。このメッセージ待ち行列のCCSIDは65534です。
*JOB
メッセージ待ち行列のCCSIDは,このコマンドを実行するジョブのCCSIDに変更されます。
コード化文字セットID
このメッセージ待ち行列と関連付けられたCCSIDを指定してください。このメッセージ待ち行列に送られたメッセージは,このCCSIDに変換されます。有効な値の範囲は1から65535です。有効なCCSIDの値のリストについては,IBM I INFORMATION CENTER (HTTP://WWW.IBM.COM/SYSTEMS/I/INFOCENTER/)の「I5/OSのグローバリゼーション」トピック・コレクションを参照してください。

注: メッセージ待ち行列のCCSIDを変更しても,その待ち行列に入っているメッセージは変換されず,個々のメッセージと関連付けられているCCSIDは変更されません。メッセージ待ち行列が*MSGに変更し直された場合には,各メッセージの元のCCSIDが使用されます。

既にメッセージが入っているメッセージ待ち行列のCCSIDを変更すると,予測できない結果が起こることがあります。これは,メッセージのエンコードが指定されたCCSIDと一致しない時に起こる可能性があります。メッセージ待ち行列のCCSIDを変更するのは,メッセージ待ち行列のCCSIDがそこに入っているメッセージのエンコードと合わない時だけにしてください。

メッセージ・ハンドラーとそれによるCCSIDの使用の詳細については,IBM I INFORMATION CENTER (HTTP://WWW.IBM.COM/SYSTEMS/I/INFOCENTER/)の「I5/OSのグローバリゼーション」トピック・コレクションを参照してください。

メッセージ待ち行列満杯時処置 (MSGQFULL)

メッセージ待ち行列がいっぱいの時に取る処置を指定してください。

*SAME
値は変更されません。
*SNDMSG
メッセージ待ち行列がいっぱいの時に,CPF2460(メッセージ待ち行列を拡張することはできない。)がいっぱいのメッセージ待ち行列にメッセージを送信しているプログラムまたはユーザーに対して送信されます。
*WRAP
メッセージ待ち行列が満杯の場合には,最も古い通知および回答済みメッセージから順にメッセージ待ち行列から除去され,新しいメッセージを追加するスペースが使用できるようになります。通知メッセージと応答済みメッセージを除去しても要求されたメッセージを追加する十分なスペースが得られない場合には,要求されたメッセージを追加するスペースができるまで,未応答の照会メッセージが除去されます。未応答の照会メッセージが除去される前に,省略時の応答が送られます。メッセージ待ち行列が折り返されると,CPI2420またはCPI2421がいっぱいだった待ち行列に送られ,折り返されたことを示します。これらのメッセージを送るのに待ち行列に空きがない場合には,待ち行列にメッセージを送ったユーザーのジョブ・ログに送られ,待ち行列QSYSOPRがいっぱいの時にはQHSTに送られます。

:待ち行列が*WRAPを使用しており,ジョブがメッセージを送ると待ち行列が折り返される時には,折り返しを実行するために次の条件の場合にメッセージが除去されます。

  • 待ち行列がジョブの中断モードまたは通知モードである。
  • 待ち行列が待ち時間を指定された受け取り機能であったため,ジョブがメッセージ待機状態である。
  • 待ち行列がALCOBJコマンドを経由してジョブにより割り振られる。

システム折り返し機能だけが,これらの条件の時に待ち行列からメッセージを除去できます。その他のジョブはまだ,これらの条件の時でも待ち行列からメッセージを除去することができません。*SNDMSGでは,これらの条件で他のジョブが待ち行列からメッセージを除去することはできません。

また,待ち行列が*WRAPを指定し,中断モードの時には,折り返し機能は中断処理プログラムが受け取ったメッセージだけを除去します。例えば,中断処理プログラムが待ち行列からすべてのメッセージを受け取らないうちにいっぱいになるような場合には,折り返しを実行するためにメッセージを除去することができないので,CPF2460が出される場合があります。

1:通知モードへの転送方法の変更

CHGMSGQ   MSGQ(JONES)  DLVRY(*NOTIFY)

このコマンドは,JONESという名前のメッセージ待ち行列の転送方法を通知モードに変更します。メッセージがユーザーの待ち行列に送られると,ユーザーにはただちにアテンション・ライトと音響警報によって通知されます(導入されている場合)。

2:中断モードへの転送方法の変更

CHGMSGQ   MSGQ(INV)  DLVRY(*BREAK)  PGM(INVUPDT)

このコマンドは,INVという名前のメッセージ待ち行列の転送モードを*BREAKに変更し,メッセージがINVに到着した時にINVUPDTという名前のプログラムを呼び出します。他のジョブがメッセージ待ち行列INVの照会メッセージに応答することはできません。

エラー・メッセージ

*ESCAPE メッセージ

CPF2401
ライブラリー&1は認可されていない。
CPF2403
&2にメッセージ待ち行列&1が見つからない。
CPF2406
&4のメッセージ待ち行列&3の&2の中断プログラム&1の呼び出しで権限エラーが起こった。
CPF2408
メッセージ待ち行列&1は認可されていない。
CPF2437
MSGQ(*WRKSTN)は対話式以外には使用することができない。
CPF244E
総称メッセージ待ち行列の場合に指定した転送が正しくない。
CPF2446
システム・ログ・メッセージ待ち行列に指定した転送モードが正しくない。
CPF2450
ワークステーション・メッセージ待ち行列&1がジョブに割り振られていない。
CPF2451
メッセージ待ち行列&1は別のジョブに割り振られている。
CPF247E
CCSID &1が無効です。
CPF2477
メッセージ待ち行列&1は現在使用中である。
CPF2485
&4の&2メッセージ待ち行列&3の中断プログラム&1のパラメーターの数が正しくない。
CPF2507
バッチ・モードでMODE(*NOTIFY)を使用することはできない。
CPF2522
&4のメッセージ待ち行列&3のための&2の中断プログラム&1を呼び出すことができない。
CPF2534
MSGQ(*USRPRF)が指定されたが,ユーザー・プロファイルのメッセージ待ち行列がない。
CPF8127
&9のメッセージ待ち行列&4に&8の損傷がある。VLICログは&7です。
CPF8176
装置記述&4のメッセージ待ち行列に損傷がある。