MSGQ_RECEIVE
このアクティビティはIBM i サーバーのメッセージ待ち行列からのメッセージを受け取ります。IBM i サーバーでのみサポートされます。
指定のメッセージ待ち行列にメッセージを送るMSGQ_SEND アクティビティも参照してください。
このアクティビティが指定のメッセージ待ち行列からのメッセージを受け取ると、メッセージ・テキスト、メッセージ・データ、メッセージ識別子や送信者情報など、さまざまなメッセージの属性がこのアクティビティのOUTPUTパラメータを通して入手可能となります。
受信するメッセージが存在しない場合、またはMSGWAITパラメータで指定された時間(指定された場合のみ)の間待った後、このアクティビティは正常に終了しますが、メッセージ属性を含むOUTPUTパラメータは埋められません。メッセージが受信されたかどうかを確認するには、OUTPUTパラメータのRCVCOUNTの値を利用してください。
このアクティビティが依存するオペレーティング・システムの機能についての情報は、IBM i のドキュメント内のメッセージ待ち行列、メッセージ記述、メッセージ・ファイルを参照してください。
INPUTパラメータ:
MSGQ :必須
メッセージを受信するメッセージ待ち行列の名前を指定します。
MSGQLIB :任意
メッセージ待ち行列を含むライブラリ名を指定します。指定されない場合の省略値は*LIBLで、ライブラリ・リストが指定のメッセージ待ち行列を検索するために使用されます。
MSGPOS :任意
このパラメータを使って、どのメッセージをメッセージ待ち行列から受信するかや、”古い”メッセージ(つまり、以前に受信され、削除されることなく残っているメッセージ)を受信するなどのコントロールができます。
通常の値(そして省略値)は*NEWで、アクティビティは”新しい”メッセージ、つまり今まで(削除もされず)受信されたことのないメッセージを受信します。この値が指定される(もしくは省略される)場合、FIFO(先入れ先出し)の順でメッセージが受け取られます。
代わりに*FIRSTや*LASTなどの値を指定して、メッセージ待ち行列内の最初や最後のメッセージを受信することもできます。これらの値を利用することで、”古い”メッセージを再び受け取ることが可能ですが、場合によっては”新しい”メッセージを受信することもあります。
MSGWAIT :任意
アクティビティが実行された際に取得可能なメッセージがない場合に、待ち行列にメッセージが届くまでどのくらい待つかの時間(秒単位で)を指定します。
省略値は0です。つまり、アクティビティが実行された際に取得可能なメッセージがない場合、待ち行列にメッセージが届くまで待ちません。
特別な値*MAXを指定することも可能で、メッセージが届くまでアクティビティが無制限に待ちます。ただし、この値を指定するとメッセージがメッセージ待ち行列にない場合、アクティビティを含む処理シーケンスも無制限に引き止められることを念頭に置いてください。メッセージが届かない限り、このような処理シーケンスを終了させるには、ジョブまたはジョブが実行されているサブシステム、もしくはシステムを終了させるしかありません。
MSGRMV :任意
メッセージ待ち行列から受け取ったメッセージを削除するかどうかを指定します。省略値は*YESで、メッセージは削除されます。*NOを指定して、メッセージ待ち行列からメッセージを削除しないことも可能です。その場合、システムではこのメッセージは”古い”ものだとみなされ、MSGPOSパラメータで*FIRSTや*LASTを指定しない限り、このアクティビティで再び受け取ることはありません。独自の処理シーケンスが”古い”メッセージをメッセージ待ち行列に残している場合、オペレーティング・システム・コマンドのCLRMSGQを実行するなどの方法で、これらのメッセージをユーザーの責任で削除してください。
OUTPUTパラメータ:
RCVCOUNT:
受け取ったメッセージの数。メッセージの受信が正常に行われた場合の値は1です。そうでない場合の値は0です。MSGWAITパラメータで指定された時間待った後に受信可能なメッセージがない場合、このアクティビティは正常に終了します。
RCVMSGSEV:
メッセージが受信された場合、このパラメータには受け取ったメッセージの重大度コードが格納されます。MSGQ_SENDアクティビティにより送られた即座のメッセージは、通常重大度コードは'00'です。事前に定義されたメッセージの場合、重大度コードはメッセージ記述で定義されます。
RCVMSGTYPE:
メッセージが受信された場合、このパラメータには受け取ったメッセージのメッセージタイプが格納されます。MSGQ_SENDアクティビティにより送られたメッセージのメッセージタイプは*INFOです。他の方法により送信されたメッセージの場合、メッセージタイプは送信プログラムで指定されます。
RCVMSGID:
メッセージが受信された場合、このパラメータには受け取ったメッセージのメッセージ識別子が格納されます。即座のメッセージには識別子がありません。それ以外の場合、RCVMSGFやRCVMSGFLIBパラメータにより識別されたメッセージファイルのメッセージ記述がこの値になります。
RCVMSGF:
メッセージが受信された場合、このパラメータには受け取ったメッセージのメッセージファイル名が格納されます。即座のメッセージにはメッセージファイル名がありません。それ以外の場合、このメッセージを送信するために使用されたメッセージ記述が含まれるファイル名がこの値になります。
RCVMSGFLIB:
メッセージが受信された場合、このパラメータにはメッセージが含まれるライブラリがあれば、そのライブラリ名が格納されます。
RCVMSGTXT:
メッセージが受信された場合、このパラメータには受け取ったメッセージの一次レベルのメッセージ・テキストが格納されます。事前に定義されたメッセージの場合、このパラメータにはメッセージが送信される前にテキストの代替変数に置換されたメッセージ・データ・フィールドが含まれます。最大256文字までの一次レベルのテキストが戻されます。
RCVSECLVL:
メッセージが受信された場合、このパラメータには受け取ったメッセージの二次レベルのメッセージ・テキストが格納されます。即座のメッセージには二次レベルのメッセージ・テキストはありません。事前に定義されたメッセージの場合、このパラメータにはメッセージが送信される前に二次レベルテキストの代替変数に置換されたメッセージ・データ・フィールドが含まれます。最大256文字までの二次レベルのテキストが戻されます。
RCVMSGDTA:
メッセージが受信された場合、このパラメータには受け取ったメッセージのメッセージ・データ・フィールド値が格納されます。即座のメッセージにはメッセージ・データはありません。それ以外の場合、メッセージを送信する際に使用されたメッセージ・データ値の単一ストリングが含まれます。最大256文字までのメッセージデータが戻されます
SENDJOB:
メッセージが受信された場合、このパラメータにはメッセージを送信したジョブ名が格納されます。
SENDUSER:
メッセージが受信された場合、このパラメータにはメッセージを送信したジョブのユーザー名が格納されます。
SENDJOBNBR:
メッセージが受信された場合、このパラメータにはメッセージを送信したジョブ番号が格納されます。
SENDDATE:
メッセージが受信された場合、このパラメータにはメッセージを送信した日付が格納されます。日付はISO形式、つまりCCYY-MM-DDです。
SENDTIME:
メッセージが受信された場合、このパラメータにはメッセージを送信した時刻が格納されます。時刻はISO形式、つまりHH:MM:SSです。