MQGMO - 読み取りメッセージ・オプション

MQGMO 構造体を使用すると、アプリケーションはキューからメッセージを除去する方法を制御できます。 この構造体は、MQGET 呼び出しの入出力パラメーターです。

バージョン

MQGMO の現行バージョンは MQGMO_VERSION_4です。 一部のフィールドは、特定のバージョンの MQGMO でのみ使用できます。 複数の環境でアプリケーションを移植する必要がある場合は、MQGMO のバージョンがすべての環境で整合していることを確認しなければなりません。 特定のバージョンの構造体にのみ存在するフィールドは、MQGMO - Get-message optionsおよびフィールドの説明でそのように識別される。

サポートされているプログラミング言語用に提供されているヘッダー・ファイル、COPY ファイル、および INCLUDE ファイルには、環境でサポートされている最新バージョンの MQGMO が含まれていますが、 Version フィールドの初期値は MQGMO_VERSION_1に設定されています。 バージョン 1 の構造体内に存在しないフィールドを使用するには、Version フィールドを必要なバージョンのバージョン番号に設定します。

文字セットとエンコード

MQGMO のデータは、 CodedCharSetId キュー・マネージャー属性で指定された文字セットと、MQENC_NATIVE で指定されたローカル・キュー・マネージャーのエンコードになっていなければなりません。 ただし、アプリケーションが MQ MQI クライアントとして実行されている場合、構造体はクライアントの文字セットとエンコードに従っている必要があります。

フィールド

注: 以下の表では、フィールドはアルファベット順ではなく、用途別にグループ化されている。 子供のトピックも同じ順序で進む。
表 1. MQGMOのMQGMOのフィールド
フィールド名と説明 定数の名前 定数の初期値 (存在する場合)
StrucId (構造体識別子) MQGMO_STRUC_ID 'GMO¬'
バージョン (構造バージョン番号) MQGMO_VERSION_1 1
MQGMO-Options フィールド (MQGET のアクションを制御するオプション) MQGMO_NO_WAIT 0
WaitInterval (待機間隔) なし 0
Signal1 (シグナル) なし z/OS® では NULL ポインター。 その他の場合は 0
Signal2 (シグナル ID) なし 0
ResolvedQName (宛先キューの解決名) なし ヌル・ストリングまたはブランク
注: Version が MQGMO_VERSION_2より前の場合、残りのフィールドは無視されます。
MatchOptions (MQGET に使用される選択基準を制御するオプション) MQMO_MATCH_MSG_ID + MQMO_MATCH_CORREL_ID 3
GroupStatus (取得したメッセージがグループ内にあるかどうかを示すフラグ) MQGS_NOT_IN_GROUP '¬'
SegmentStatus (取り出されたメッセージが論理メッセージのセグメントであるかどうかを示すフラグ) MQSS_NOT_A_SEGMENT '¬'
セグメンテーション (取得されたメッセージに対してさらにセグメンテーションが許可されるかどうかを示すフラグ) MQSEG_INHIBITED '¬'
Reserved1 (予約済み) なし '¬'
注: Version が MQGMO_VERSION_3より前の場合、残りのフィールドは無視されます。
MsgToken (メッセージトークン) MQMTOK_NONE Null
ReturnedLength (戻されるメッセージ・データの長さ (バイト単位)) MQRL_UNDEFINED -1
注: Version が MQGMO_VERSION_4より前の場合、残りのフィールドは無視されます。
Reserved2 (予約済み) なし '¬'
MsgHandle (キューから取得されるメッセージのプロパティーが取り込まれるメッセージへのハンドル) MQHM_NONE 0
注:
  1. 記号¬は、単一のブランク文字を表します。
  2. ヌル・ストリングまたはブランクの値は、C 言語ではヌル・ストリングを表し、他のプログラミング言語ではブランク文字を表します。
  3. C プログラミング言語では、マクロ変数 MQGMO_DEFAULT に表にリストされている値が設定されています。 この変数を以下の方法で使用すると、構造体のフィールドに初期値を設定できます。
    MQGMO MyGMO = {MQGMO_DEFAULT};
    

言語ごとの宣言

MQGMO の C 宣言

typedef struct tagMQGMO MQGMO;
struct tagMQGMO {
  MQCHAR4   StrucId;         /* Structure identifier */
  MQLONG    Version;         /* Structure version number */
  MQLONG    Options;         /* Options that control the action of */
                                MQGET */
  MQLONG    WaitInterval;    /* Wait interval */
  MQLONG    Signal1;         /* Signal */
  MQLONG    Signal2;         /* Signal identifier */
  MQCHAR48  ResolvedQName;   /* Resolved name of destination queue */
  /* Ver:1 */
  MQLONG    MatchOptions;    /* Options controlling selection */
                                criteria used for MQGET */
  MQCHAR    GroupStatus;     /* Flag indicating whether message */
                                retrieved is in a group */
  MQCHAR    SegmentStatus;   /* Flag indicating whether message */
                                retrieved is a segment of a logical */
                                message */
  MQCHAR    Segmentation;    /* Flag indicating whether further */
                                segmentation is allowed for the */
                                message retrieved */
  MQCHAR    Reserved1;       /* Reserved */
  /* Ver:2 */
  MQBYTE16  MsgToken;        /* Message token */
  MQLONG    ReturnedLength;  /* Length of message data returned */
                                (bytes) */
  /* Ver:3 */
  MQLONG    Reserved2;       /* Reserved */
  MQHMSG    MsgHandle;       /* Message handle */
  /* Ver:4 */
};
注: z/OSでは、 Signal1 フィールドは PMQLONGとして宣言されます。

MQGMO の COBOL 宣言

**   MQGMO structure
  10 MQGMO.
**    Structure identifier
   15 MQGMO-STRUCID        PIC X(4).
**    Structure version number
   15 MQGMO-VERSION        PIC S9(9) BINARY.
**    Options that control the action of MQGET
   15 MQGMO-OPTIONS        PIC S9(9) BINARY.
**    Wait interval
   15 MQGMO-WAITINTERVAL   PIC S9(9) BINARY.
**    Signal
   15 MQGMO-SIGNAL1        PIC S9(9) BINARY.
**    Signal identifier
   15 MQGMO-SIGNAL2        PIC S9(9) BINARY.
**    Resolved name of destination queue
   15 MQGMO-RESOLVEDQNAME  PIC X(48).
**    Options controlling selection criteria used for MQGET
   15 MQGMO-MATCHOPTIONS   PIC S9(9) BINARY.
**    Flag indicating whether message retrieved is in a group
   15 MQGMO-GROUPSTATUS    PIC X.
**    Flag indicating whether message retrieved is a segment of a
**    logical message
   15 MQGMO-SEGMENTSTATUS  PIC X.
**    Flag indicating whether further segmentation is allowed for the
**    message retrieved
   15 MQGMO-SEGMENTATION   PIC X.
**    Reserved
   15 MQGMO-RESERVED1      PIC X.
**    Message token
   15 MQGMO-MSGTOKEN       PIC X(16).
**    Length of message data returned (bytes)
   15 MQGMO-RETURNEDLENGTH PIC S9(9) BINARY.
**    Reserved
   15 MQGMO-RESERVED2      PIC S9(9) BINARY.
**    Message handle
   15 MQGMO-MSGHANDLE      PIC S9(18) BINARY.
注: z/OSでは、 Signal1 フィールドは POINTERとして宣言されます。

MQGMO の PL/I 宣言

dcl
 1 MQGMO based,
  3 StrucId        char(4),       /* Structure identifier */
  3 Version        fixed bin(31), /* Structure version number */
  3 Options        fixed bin(31), /* Options that control the action of
                                     MQGET */
  3 WaitInterval   fixed bin(31), /* Wait interval */
  3 Signal1        fixed bin(31), /* Signal */
  3 Signal2        fixed bin(31), /* Signal identifier */
  3 ResolvedQName  char(48),      /* Resolved name of destination
                                     queue */
  3 MatchOptions   fixed bin(31), /* Options controlling selection
                                     criteria used for MQGET */
  3 GroupStatus    char(1),       /* Flag indicating whether message
                                     retrieved is in a group */
  3 SegmentStatus  char(1),       /* Flag indicating whether message
                                     retrieved is a segment of a logical
                                     message */
  3 Segmentation   char(1),       /* Flag indicating whether further
                                     segmentation is allowed for the
                                     message retrieved */
  3 Reserved1      char(1),       /* Reserved */
  3 MsgToken       char(16),      /* Message token */
  3 ReturnedLength fixed bin(31); /* Length of message data returned
                                     (bytes) */
  3 Reserved2      fixed bin(31); /* Reserved */
  3 MsgHandle      fixed bin(63); /* Message handle */
注: z/OSでは、 Signal1 フィールドは pointerとして宣言されます。

MQGMO の高水準アセンブラー宣言

MQGMO                 DSECT
MQGMO_STRUCID         DS   CL4   Structure identifier
MQGMO_VERSION         DS   F     Structure version number
MQGMO_OPTIONS         DS   F     Options that control the action of
*                                MQGET
MQGMO_WAITINTERVAL    DS   F     Wait interval
MQGMO_SIGNAL1         DS   F     Signal
MQGMO_SIGNAL2         DS   F     Signal identifier
MQGMO_RESOLVEDQNAME   DS   CL48  Resolved name of destination queue
MQGMO_MATCHOPTIONS    DS   F     Options controlling selection criteria
*                                used for MQGET
MQGMO_GROUPSTATUS     DS   CL1   Flag indicating whether message
*                                retrieved is in a group
MQGMO_SEGMENTSTATUS   DS   CL1   Flag indicating whether message
*                                retrieved is a segment of a logical
*                                message
MQGMO_SEGMENTATION    DS   CL1   Flag indicating whether further
*                                segmentation is allowed for the message
*                                retrieved
MQGMO_RESERVED1       DS   CL1   Reserved
MQGMO_MSGTOKEN        DS   XL16  Message token
MQGMO_RETURNEDLENGTH  DS   F     Length of message data returned (bytes)
MQGMO_RESERVED2       DS   F     Reserved
MQGMO_MSGHANDLE       DS   D     Message handle
MQGMO_LENGTH          EQU  *-MQGMO
                      ORG  MQGMO
MQGMO_AREA            DS   CL(MQGMO_LENGTH)

MQGMO の高水準アセンブラー宣言

Type MQGMO
  StrucId        As String*4  'Structure identifier'
  Version        As Long      'Structure version number'
  Options        As Long      'Options that control the action of MQGET'
  WaitInterval   As Long      'Wait interval'
  Signal1        As Long      'Signal'
  Signal2        As Long      'Signal identifier'
  ResolvedQName  As String*48 'Resolved name of destination queue'
  MatchOptions   As Long      'Options controlling selection criteria'
                              'used for MQGET'
  GroupStatus    As String*1  'Flag indicating whether message'
                              'retrieved is in a group'
  SegmentStatus  As String*1  'Flag indicating whether message'
                              'retrieved is a segment of a logical'
                              'message'
  Segmentation   As String*1  'Flag indicating whether further'
                              'segmentation is allowed for the message'
                              'retrieved'
  Reserved1      As String*1  'Reserved'
  MsgToken       As MQBYTE16  'Message token'
  ReturnedLength As Long      'Length of message data returned (bytes)'
End Type

MQGMOPROPCTL チャネル・オプション

PROPCTL チャネル属性を使用して、 IBM® MQ 9.2 キュー・マネージャーから旧バージョンの IBM MQのパートナー・キュー・マネージャーに送信されるメッセージに含めるメッセージ・プロパティーを制御します。

表 2. チャネル・メッセージ・プロパティー属性の設定
PROPCTL 説明
ALL

このオプションは、以前のバージョンからパートナー・キュー・マネージャーに接続されたアプリケーションが、 IBM MQ 9.2 アプリケーションによってメッセージに入れられたプロパティーを処理できる場合に使用します。

MQRFH2 に配置される名前と値のペアに加えて、すべてのプロパティーがパートナー・キュー・マネージャーに送信されます。

アプリケーション設計に関する次の 2 つの問題を考慮する必要があります。
  1. パートナー・キュー・マネージャーに接続されたアプリケーションは、 IBM MQ 9.2 キュー・マネージャーで生成された MQRFH2 ヘッダーを含むメッセージを処理できなければなりません。
  2. パートナー・キュー・マネージャーに接続されたアプリケーションは、MQPD_SUPPORT_REQUIRED というフラグが付いた新しいメッセージ・プロパティーを正しく処理する必要があります。

ALL チャネル・オプションが設定されている場合、 JMS アプリケーションは、そのチャネルを使用して、 IBM MQ 9.2 と以前のバージョンとの間で相互運用を行うことができます。 メッセージ・プロパティーを使用する新しい IBM MQ 9.2 アプリケーションは、以前のバージョンのアプリケーションが MQRFH2 ヘッダーを処理する方法に応じて、以前のバージョンのアプリケーションと相互運用することができます。

COMPAT

このオプションは、以前のバージョンのパートナー・キュー・マネージャーに接続されたアプリケーションに、場合によって (常にではない) メッセージ・プロパティーを送信するために使用します。 メッセージ・プロパティーは、次の 2 つの条件が満たされる場合にのみ送信されます。

  1. 処理が必須のメッセージ・プロパティーとしてマークされたプロパティーが 1 つもないこと。
  2. 少なくとも 1 つのメッセージ・プロパティーが reserved フォルダー内になければなりません。 を参照してください。

COMPAT チャネル・オプションが設定されている場合、 JMS アプリケーションは、チャネルを使用して IBM MQ 9.2 と以前のバージョンの間で相互運用を行うことができます。

チャネルは、メッセージ・プロパティーを使用するすべてのアプリケーションに使用可能になるわけではありません。予約済みフォルダーを使用するアプリケーションにのみ使用可能になります。 メッセージが送信されるか、またはプロパティーが送信されるかに関する規則は以下のとおりです。

  1. メッセージにプロパティーが含まれているが、そのプロパティーが 予約済み フォルダーに関連付けられていない場合、メッセージ・プロパティーは送信されません。
  2. メッセージ・プロパティーが 予約済み プロパティー・フォルダーに作成されている場合、メッセージ関連付けられているすべてのメッセージ・プロパティーが送信されます。 ただし、以下の制限があります。
    1. メッセージ・プロパティーのいずれかが、サポートが必要であるとしてマークされている場合 (MQPD_SUPPORT_REQUIRED または MQPD_SUPPORT_REQUIRED_IF_LOCAL)、メッセージ全体が拒否されます。 メッセージのレポート・オプションの値に応じて、メッセージが返されるか、破棄されるか、または送達不能キューに送信されます。
    2. サポートが必要であるとしてマークされているメッセージ・プロパティーがない場合、個々のプロパティーが送信されないことがあります。 メッセージ・プロパティー記述子フィールドのいずれかがデフォルト以外の値に設定されている場合、個々のプロパティーは送信されません。 ただし、メッセージは送信されます。 デフォルト以外のプロパティー記述子フィールドの値の例は、MQPD_USER_CONTEXT です。
注: 予約済み フォルダー名は、 mcd.jms.usr.、または mqext.で始まります。 これらのフォルダーは、 JMS インターフェースを使用するアプリケーション用に作成されます。 IBM MQ 9.2 では、これらのフォルダーに配置された名前と値のペアは、メッセージ・プロパティーとして扱われます。

MQRFH2 ヘッダーに配置された名前と値のペアに加え、メッセージ・プロパティーも MQRFH2 ヘッダーで送信されます。 MQRFH2 ヘッダーに配置された名前と値のペアは、メッセージが拒否されない限り、送信されます。

NONE

このオプションは、以前のバージョンのパートナー・キュー・マネージャーに接続されたアプリケーションにメッセージ・プロパティーが送信されないようにするために使用します。 名前と値のペアおよびメッセージ・プロパティーが含まれる MQRFH2 は送信されますが、名前と値のペアだけが設定されて送信されます。

NONE チャネル・オプションが設定されている場合、 JMS メッセージは、 JMS メッセージ・プロパティーを持たない JMSTextMessage または JMSBytesMessage として送信されます。 以前のバージョンのアプリケーションで、 IBM MQ 9.2 アプリケーションに設定されているすべてのプロパティーを無視できる場合は、そのアプリケーションと相互運用することができます。

MQGMOPROPCTL キュー・オプション

PROPCTL キュー属性を使用して、MQGMO メッセージ・プロパティー・オプションの設定なしで MQGET を呼び出すアプリケーションにメッセージ・プロパティーを返す方法を制御します。

表 3. キュー・メッセージ・プロパティー属性の設定値
PROPCTL 説明
ALL

ALL オプションを使用すると、同じキューからメッセージを読み取るさまざまなアプリケーションが、そのメッセージをさまざまな方法で処理できるようになります。

  • 変更せずに以前のバージョンからマイグレーションしたアプリケーションは、引き続き MQRFH2 を直接読み取ることができます。 MQRFH2 ヘッダーにあるプロパティーには直接アクセスできます。

    新しいプロパティーや新しいプロパティー属性を処理するためにはアプリケーションを変更する必要があります。 MQRFH2 ヘッダーの数やレイアウトの変更によって、アプリケーションが影響を受けることもあります。 一部のフォルダー属性が削除されたか、以前のバージョンで無視された MQRFH2 ヘッダーのレイアウトに関するエラーが IBM MQ によって報告された可能性があります。

  • 新しいまたは変更されたアプリケーションは、メッセージ・プロパティー MQI を使用してメッセージ・プロパティーを照会し、MQRFH2 ヘッダーにある名前と値のペアを直接読み取ることができます。
メッセージ内のすべてのプロパティーがアプリケーションに返されます。
  • アプリケーションが MQCRTMH を呼び出してメッセージ・ハンドルを作成する場合、 アプリケーションは MQINQMP を使用してメッセージ・プロパティーを照会する必要があります。 MQRFH2 からはメッセージ・プロパティーが除去され、メッセージ・プロパティーではない名前と値のペアが残ります。
  • アプリケーションがメッセージ・ハンドルを作成しない場合には、すべてのメッセージ・プロパティーおよび名前と値のペアが MQRFH2 に残ります。

ALL は、受信側アプリケーションが MQGMO_PROPERTIES オプションを設定していないか、 MQGMO_PROPERTIES_AS_Q_DEFに設定している場合にのみ、この効果があります。

COMPAT (デフォルト)

COMPAT がデフォルト・オプションです。 以前のバージョンから変更されていないアプリケーションのように、GMO_PROPERTIES_* が設定されていない場合は、COMPAT として扱われます。 デフォルトを COMPAT オプションに設定すると、明示的に MQRFH2を作成していなかった旧バージョンのアプリケーションは、 IBM MQ 9.2で変更を行うことなく機能します。

このオプションは、 JMS メッセージを読み取るために、以前のバージョンの MQI アプリケーションを作成した場合に使用します。

  • MQRFH2 ヘッダーに保管されている JMS プロパティーは、 mcd.jms.usr.、または mqextで始まる名前のフォルダー内の MQRFH2 ヘッダーでアプリケーションに返されます。
  • メッセージに JMS フォルダーがあり、 IBM MQ 9.2 アプリケーションがメッセージに新しいプロパティー・フォルダーを追加した場合、これらのプロパティーも MQRFH2に返されます。 したがって、新しいプロパティーや新しいプロパティー属性があれば、それを処理できるようにアプリケーションを変更する必要があります。 変更されていないアプリケーションは、MQRFH2 ヘッダーのレイアウトや数の変更による影響を受ける可能性があります。 一部のフォルダー属性が削除されたか、以前のバージョンで無視された MQRFH2 ヘッダーのレイアウトにエラーが IBM MQ によって検出された可能性があります。
    注: このシナリオでは、アプリケーションが旧バージョンまたは IBM MQ 9.2 キュー・マネージャーのどちらに接続されていても、アプリケーションの動作は同じです。 チャネルの PROPCTL 属性が COMPAT または ALL に設定されている場合、 メッセージに含まれる新しいメッセージ・プロパティーはすべて以前のバージョンのパートナー・キュー・マネージャーに送信されます。
  • メッセージが JMS メッセージではなく、他のプロパティーを含んでいる場合、それらのプロパティーは MQRFH2 ヘッダーでアプリケーションに返されません。 1
  • このオプションを使用すると、MQRFH2 を明示的に作成する以前のバージョンのアプリケーションも、多くの場合に正常に動作します。 例えば、 JMS メッセージ・プロパティーを含む MQRFH2 を作成する MQI プログラムは、引き続き正常に機能します。 メッセージが JMS メッセージ・プロパティーなしで作成され、他のいくつかの MQRFH2 フォルダーと共に作成された場合、そのフォルダーはアプリケーションに返されます。 フォルダーがメッセージ・プロパティー・フォルダーである場合にのみ、それら特定のフォルダーは MQRFH2 から削除されます。 メッセージ・プロパティー・フォルダーは、新規フォルダー属性 content='properties'を持つことによって識別されるか、 「定義済みプロパティー・フォルダー名」 または 「グループ化されていないプロパティー・フォルダー名」にリストされている名前を持つフォルダーです。
  • アプリケーションが MQCRTMH を呼び出してメッセージ・ハンドルを作成する場合、 アプリケーションは MQINQMP を使用してメッセージ・プロパティーを照会する必要があります。 MQRFH2 ヘッダーにあるメッセージ・プロパティーは削除されます。 メッセージ・プロパティーではない名前と値のペアは MQRFH2 に残ります。
  • アプリケーションが MQCRTMH を呼び出してメッセージ・ハンドルを作成する場合、メッセージに JMS フォルダーがあるかどうかに関係なく、すべてのメッセージ・プロパティーを照会できます。
  • アプリケーションがメッセージ・ハンドルを作成しない場合には、すべてのメッセージ・プロパティーおよび名前と値のペアが MQRFH2 に残ります。

メッセージに新規ユーザー・プロパティー・フォルダーが含まれている場合、そのメッセージは新規または変更された IBM MQ 9.2 アプリケーションによって作成されたと推測できます。 これらの新しいプロパティーを受信アプリケーションが MQRFH2 内で直接処理するには、 アプリケーションを ALL オプションを使用するように変更する必要があります。 デフォルトの COMPAT オプションが設定されている場合、変更されていないアプリケーションは、 IBM MQ 9.2 プロパティーを使用せずに、 MQRFH2の残りの部分の処理を続行します。

PROPCTL インターフェースは、MQRFH2 フォルダーを読み取る古いアプリケーションをサポートすると同時に、新規または変更されたアプリケーションがメッセージ・プロパティー・インターフェースを使用できるようにするためのものです。 新しいアプリケーションを使用する目的は、すべてのユーザー・メッセージ・プロパティーにメッセージ・プロパティー・インターフェースを使用し、 MQRFH2 ヘッダーを直接読み取る/書き込むことを回避することにあります。

COMPAT は、受信側アプリケーションが MQGMO_PROPERTIES オプションを設定していない場合、またはこのオプションを MQGMO_PROPERTIES_AS_Q_DEFに設定している場合にのみ、この効果があります。

FORCE

FORCE オプションを指定すると、すべてのメッセージ・プロパティーが MQRFH2 ヘッダーに配置されます。 MQRFH2 ヘッダーのすべてのメッセージ・プロパティーおよび名前と値のペアはメッセージに残ります。 メッセージ・プロパティーは MQRFH2 から削除されず、メッセージ・ハンドルから使用可能になります。 FORCE オプションを選択すると、新たにマイグレーションされたアプリケーションが MQRFH2 ヘッダーからメッセージ・プロパティーを読み取れるようになります。

IBM MQ 9.2 メッセージ・プロパティーを処理するようにアプリケーションを変更したが、以前と同様に MQRFH2 ヘッダーを直接処理する機能も保持していたとします。 最初に PROPCTL キュー属性を FORCE に設定しておけば、メッセージ・プロパティーを使用するようにアプリケーションを切り替えるタイミングを決定できます。 メッセージ・プロパティーを使用できるようになったら、PROPCTL キュー属性に別の値を設定します。 アプリケーションの新しい機能が予期したとおりに動作しない場合は、PROPCTL オプションの設定を FORCE に戻します。

FORCE は、受信側アプリケーションが MQGMO_PROPERTIES オプションを設定していない場合、またはこのオプションを MQGMO_PROPERTIES_AS_Q_DEFに設定している場合にのみ、この効果があります。

NONE
既存のアプリケーションがすべてのメッセージ・プロパティーを無視してメッセージを処理し、新規または変更されたアプリケーションがメッセージ・プロパティーを照会できるようにするには、 NONE オプションを使用します。
  • アプリケーションが MQCRTMH を呼び出してメッセージ・ハンドルを作成する場合、 アプリケーションは MQINQMP を使用してメッセージ・プロパティーを照会する必要があります。 MQRFH2 からはメッセージ・プロパティーが除去され、メッセージ・プロパティーではない名前と値のペアが残ります。
  • アプリケーションがメッセージ・ハンドルを作成しない場合には、MQRFH2 にあるメッセージ・プロパティーがすべて削除されます。 MQRFH2 ヘッダーの名前と値のペアはメッセージに残ります。

NONE は、受信側アプリケーションが MQGMO_PROPERTIES オプションを設定していないか、 MQGMO_PROPERTIES_AS_Q_DEFに設定している場合にのみ、この効果があります。

V6COMPAT

このオプションは、送信時と同じ形式で MQRFH2 を受け取る場合に使用します。 送信アプリケーション (つまりキュー・マネージャー) が追加のメッセージ・プロパティーを作成する場合、それらのメッセージはメッセージ・ハンドルで返されます。

このオプションは送信キューと受信キューの両方に、および中継の伝送キューがあればそのキューにも設定する必要があります。 このオプションは、キュー名解決パスのキュー定義に設定されている他のすべての PROPCTL オプションをオーバーライドします。

V6COMPAT オプションは、例外的な状況でのみ使用してください。 例えば、アプリケーションを以前のバージョンから IBM MQ 9.2にマイグレーションする場合、このオプションは以前のバージョンの動作を保持するため、有用です。 このオプションはメッセージ・スループットに影響することがあります。 また、このオプションが送信側キュー、受信側キュー、および中継伝送キューに設定されていることを確認する必要があるため、管理は一層難しくなります。

V6COMPAT は、受信側アプリケーションが MQGMO_PROPERTIES オプションを設定していないか、 MQGMO_PROPERTIES_AS_Q_DEFに設定している場合にのみ、この効果があります。

メッセージ・プロパティと名前と値のペアの詳細については、 NameValueData (MQCHARn) を参照してください。

MQGMO のメッセージ・プロパティー・オプション

MQGMO メッセージ・プロパティー・オプションを使用して、メッセージ・プロパティーをアプリケーションに返す方法を制御します。

表 4。 MQGMO メッセージ・プロパティー・オプションの設定
MQGMO オプション 説明
MQGMO_PROPERTIES_AS_Q_DEF

同じキューから読み取り、 GMO_PROPERTIES_*を設定しない IBM MQ アプリケーションは、異なる方法でメッセージ・プロパティーを受け取ります。 メッセージ・ハンドルを作成しない IBM MQ アプリケーションは、キューの PROPCTL 属性によって制御されます。 IBM MQ アプリケーションは、 MQRFH2でメッセージ・プロパティーを受信するか、メッセージ・ハンドルを作成してメッセージ・プロパティーを照会するかを選択できます。 アプリケーションがメッセージ・ハンドルを作成する場合、MQRFH2 のメッセージ・プロパティーは削除されます。

  • GMO_PROPERTIES_* が設定されていない、または MQGMO_PROPERTIES_AS_Q_DEF に設定されていない新規または変更された IBM MQ アプリケーションは、メッセージ・プロパティーを照会することを選択できます。 メッセージ・ハンドルを作成し、MQINQMP MQI 呼び出しを使用してメッセージ・プロパティーを照会する場合は、 MQCRTMH を設定する必要があります。
  • 新規または変更されたアプリケーションがメッセージ・ハンドルを作成しない場合、 MQRFH2 ヘッダーから直接受け取るメッセージ・プロパティーを読み取る必要があります。
  • キュー属性 PROPCTLFORCE に設定されている場合、プロパティーはメッセージ・ハンドルに入れて返されません。 すべてのプロパティーは MQRFH2 ヘッダーに入れて返されます。
  • キュー属性 PROPCTLNONEまたは COMPATに設定されている場合、メッセージ・ハンドルを作成する IBM MQ アプリケーションは、すべてのメッセージ・プロパティーを受け取ります。
MQGMO_PROPERTIES_IN_HANDLE

アプリケーションは強制的にメッセージ・プロパティーを使用します。 このオプションは、変更済みのアプリケーションがメッセージ・ハンドルの作成に失敗したかどうかを検出するために使用します。 アプリケーションは、 MQINQMPを呼び出すのではなく、 MQRFH2からメッセージ・プロパティーを直接読み取ろうとしている可能性があります。

MQGMO_NO_PROPERTIES
  • すべてのプロパティーが削除されます。 キュー・マネージャーによって生成されたプロパティー ( JMS プロパティーなど) が削除されます。
  • メッセージ・ハンドルが作成されても、プロパティーは削除されます。 他の MQRFH2 フォルダーにある名前と値のペアは、メッセージ・データ内で使用可能です。

MQGMO_PROPERTIES_FORCE_MQRFH2

メッセージ・ハンドルが作成された場合でも、プロパティーは MQRFH2 ヘッダーに入れて返されます。

  • メッセージ・ハンドルが作成された場合でも、MQINQMP はメッセージ・プロパティーを返しません。 プロパティーを照会すると、MQRC_PROPERTY_NOT_AVAILABLE が返されます。
MQGMO_PROPERTIES_COMPATIBILITY

メッセージが JMS クライアントからのものである場合、 JMS プロパティーは MQRFH2 ヘッダーで返されます。 メッセージ・ハンドルを作成する新規または変更された IBM MQ アプリケーションの動作は異なります。

  • メッセージがmcd., jms., usr., mqextフォルダを含んでいれば、メッセージのプロパティフォルダ内のすべてのプロパティが返されます。
  • メッセージにプロパティ・フォルダがあっても、mcd., jms., usr., mqext フォルダがない場合、MQRFH2 にはメッセージ・プロパティは返されません。
  • 新規または変更された IBM MQ アプリケーションがメッセージ・ハンドルを作成する場合は、 MQINQMP MQI 呼び出しを使用してメッセージ・プロパティーを照会します。 MQRFH2 にあるメッセージ・プロパティーはすべて削除されます。
  • 新規または変更された IBM MQ アプリケーションがメッセージ・ハンドルを作成する場合、メッセージ内のすべてのプロパティーを照会できます。 メッセージがmcd.jms.usr.mqextフォルダを含んでいなくても、すべてのメッセージ・プロパティは問い合わせ可能です。
1 IBM MQ classes for JMS によって作成された特定のプロパティー・フォルダーの存在は、 JMS メッセージを示します。 プロパティフォルダは、mcd., jms., usr., mqext のいずれかです。