• 先頭バイトは後続データの長さを含むバイナリ整数値であり,その長さは,長さを示すバイト自身も含 みます。セキュリティ識別子がない場合,長さは 0 です。
• 2 番目のバイトはセキュリティ識別子のタイプを示し,次の値を取ることができます。
• MQSIDT_NT_SECURITY_ID:Windows セキュリティ識別子
• MQSIDT_NONE:セキュリティ識別子ではありません。
• 3 番目以降のバイトから,先頭バイトで定義された長さまでのバイトはセキュリティ識別子自身です。
• 残りのバイトはバイナリ 0 に設定されます。
次の値を指定できます。
このフィールドの長さは,MQ_USER_ID_LENGTH に定義されています。
このフィールドの初期値は,C 言語ではヌル文字列です。そのほかのプログラミング言語では,12 個の空 白です。
● DynamicQName(MQCHAR48 型) 動的キュー名
MQOPEN 命令によって作成される動的キューの名前です。ObjectName フィールドにモデルキューの名 前が指定された場合だけに関係します。その他の場合,DynamicQName フィールドは無視されます。
この名前で有効な文字は ObjectName フィールドと同じです。さらに,アスタリスクも有効です。
ObjectName フィールドがモデルキューの名前である場合は,すべて空白の名前(または最初のヌル文字 の前が空白だけの名前)は無効です。
空白を除く名称の最後の文字がアスタリスク(*)の場合,キューマネジャは,アスタリスクをユニークな 文字列に置き換えます。これによって,ローカルキューマネジャ内でユニークなキュー名が保証されます。
この方法で十分な個数の名称を確保するために,アスタリスクの位置は 1 文字目から 33 文字目の間にし てください。アスタリスクのあとには,空白・ヌル文字以外の文字を指定できません。
アスタリスクを先頭に指定してもかまいません。この場合,名称のすべての文字がキューマネジャによっ て生成されます。ObjectName フィールドにモデルキュー名を指定した場合,すべて空白の名称,または 最初のヌル文字まで空白の名称は不正となります。
このフィールドの長さは,MQ_Q_NAME_LENGTH に定義されています。
これは,入力用のフィールドです。このフィールドの初期値は環境に依存します。TP1/Message Queue の場合の初期値は,C 言語では,ヌル文字で終わる 1 文字のアスタリスクです。そのほかのプログラミン グ言語では,余りを空白で埋められた 1 文字のアスタリスクです。
● InvalidDestCount(MQLONG 型) オープンに失敗したキューの数
配布リストの中で,オープンに失敗したキューの数です。このフィールドは,配布リストに存在しない単 一のキューをオープンしたときにも設定されます。
InvalidDestCount フィールドは,MQOPEN 命令または MQPUT1 命令の CompCode 引数が
MQCC_OK または MQCC_WARNING のときだけ設定されます。CompCode 引数が MQCC_FAILED のときには設定されません。
これは出力用のフィールドです。
このフィールドの初期値は 0 です。
このフィールドは,Version フィールドの値が MQOD_VERSION_2 以降の場合だけ有効です。
● KnownDestCount(MQLONG 型) ローカルキューの数
配布リストの中で,ローカルキューで受信され,オープンに成功したキューの数です。最初のメッセージ 登録に使用される場合も,この値はリモートキューで受信されるキューを含みません。このフィールドは,
配布リストには存在しない単一のキューをオープンしたときにも設定されます。
これは出力用のフィールドです。
このフィールドの初期値は 0 です。
このフィールドは,Version フィールドの値が MQOD_VERSION_2 以降の場合だけ有効です。
● ObjectName(MQCHAR48 型) オブジェクト名
ObjectQMgrName のキューマネジャに定義されたオブジェクトのローカル名です。
この名前には,次に示す文字を使用できます。
• 英大文字(A〜Z)
• 英小文字(a〜z)
• 数字(0〜9)
• ピリオド(.),スラント(/),アンダスコア(_),パーセント(%)
名前の先頭および中間には,空白を使用できません。末尾には空白を使用できます。名前の中で有効なデー タの末尾を示すためにヌル文字を使用できます。ヌル文字とそれに続く文字はすべて空白として処理され ます。
次に示す点は,該当するオブジェクトタイプに適用されます。
• ObjectName フィールドがモデルキューの名前である場合,キューマネジャは,モデルキューの属性 で動的キューを生成し,生成されたキューの名前を ObjectName フィールドに返します。モデルキュー は MQOPEN 命令にだけ指定できます。MQPUT1 命令では無効です。
• オープンされているオブジェクトが配布リストの場合(つまり,RecsPresent フィールドがあり,ゼロ より大きい場合),ObjectName フィールドは空白またはヌル文字列にする必要があります。条件が満 たされない場合,命令は失敗し,理由コード MQRC_OBJECT_NAME_ERROR が返されます。
• ObjectType フィールドに MQOT_Q_MGR を指定したときは,最初のヌル文字までまたはフィール ドの最後までを,空白で埋める必要があります。
このフィールドは,MQOPEN 命令でモデルキュー名を指定した場合は,入出力用のフィールドとなりま す。そのほかの場合は,入力専用のフィールドです。
このフィールドの長さは,MQ_Q_NAME_LENGTH に定義されています。
このフィールドの初期値は,C 言語ではヌル文字列です。そのほかのプログラミング言語では,48 個の空 白です。
● ObjectQMgrName(MQCHAR48 型) オブジェクトキューマネジャ名
ObjectName のオブジェクトを定義している,キューマネジャの名称です。この名前で有効な文字は,ObjectName フィールドと同じです。最初のヌル文字またはフィールドの最後 まで,全体が空白である名前は,アプリケーションが接続されるキューマネジャ(ローカルキューマネ ジャ)を表します。
次に示す項目は,該当するオブジェクトタイプに適用されます。
• ObjectType フィールドが MQOT_PROCESS または MQOT_Q_MGR である場合は,
ObjectQMgrName フィールドは空白,またはローカルキューマネジャの名前にする必要があります。
• ObjectName フィールドにモデルキュー名を指定したときは,キューマネジャによってモデルキュー の属性でキューが生成されます。このとき,生成されたキューを定義しているキューマネジャの名称が ObjectQMgrName フィールドに返されます。モデルキューは,MQOPEN 命令のときだけ指定でき ます。MQPUT1 命令では無効です。
• ObjectName がクラスタキューの名称で,かつ ObjectQMgrName が空白の場合,MQOPEN 命令 で返却されたキューハンドルを使用して送信されたメッセージの実際のあて先はキューマネジャによっ て選択されます。
• MQOO_BIND_ON_OPEN が指定された場合,キューマネジャは MQOPEN 命令の処理でクラス タキューの中にある特定のキューを選択し,そのキューハンドルを使用して登録したすべてのメッ セージはそのキューに送信されます。
• MQOO_BIND_NOT_FIXED が指定された場合,そのキューハンドルを使用した後続の MQPUT 命令では,クラスタ内の異なるキューマネジャ上に存在するあて先キューの中の異なるキューが選 択される場合もあります。
アプリケーションが特定のクラスタキュー,つまり,クラスタ内の特定のキューマネジャ上に存在する キューにメッセージを送信する必要がある場合,アプリケーションは ObjectQMgrName フィールド に,そのキューマネジャ名称を指定する必要があります。これによって,ローカルキューマネジャは指 定されたあて先キューマネジャにメッセージを送信します。
• 配布リストがオープンされている場合,つまり,RecsPresent が存在し,かつ 0 より大きい場合は,
ObjectName は空白かヌル文字列でなければなりません。それ以外では,理由コード MQRC_OBJECT_Q_MGR_NAME_ERROR で失敗します。
このフィールドは,MQOPEN 命令でモデルキュー名を指定した場合は,入出力用のフィールドとなりま す。そのほかの場合は,入力専用のフィールドです。
ObjectQMgrName フィールドの長さは,MQ_Q_MGR_NAME_LENGTH に定義されています。
このフィールドの初期値は,C 言語ではヌル文字列です。そのほかのプログラミング言語では,48 個の空 白です。
● ObjectRecOffset(MQLONG 型) 最初のオブジェクトレコードまでのオフセット
MQOD 構造体の先頭から最初の MQOR 構造体のオブジェクトレコードのバイトオフセットです。
オフセットの値は正の場合も負の場合もあります。ObjectRecOffset フィールドは,配布リストがオープ ンされているときだけ使用されます。RecsPresent フィールドが 0 であれば,無視されます。
配布リストがオープンされているとき,一つ以上の MQOR 構造体のオブジェクトレコードの配列が配布 リストのあて先キューの名称を指定するために指定されなければなりません。次に示すどちらかの方法で 指定してください。
• ObjectRecOffset フィールドを使用して指定する方法
アプリケーションは,必要な要素のある MQOR 構造体のレコード配列が続く MQOD 構造体を含む構 造体を宣言しなければなりません。また,ObjectRecOffset フィールドを MQOD 構造体の開始から その配列の最初の要素までのオフセットに指定しなければなりません。このオフセットが正しく,値が MQLONG に収まることを確認してください(最も制限の強いプログラミング言語は COBOL 言語で す。有効範囲は-999999999〜+999999999 です)。
ObjectRecOffset フィールドは,ポインタのデータ型をサポートしていない,または異なる環境に移 植しない場合にポインタ型のデータ型を実装するプログラム言語(例:COBOL 言語)でプログラミン グするときに使用することをお勧めします。
• ObjectRecPtr フィールドを使用する方法
アプリケーションは,MQOR 構造体を MQOD 構造体とは別に宣言できます。その後,ObjectRecPtr フィールドを配列のアドレスに設定します。
ObjectRecPtr フィールドは,異なる環境に移植する場合にポインタのデータ型を実装するプログラム 言語(例:C 言語)でプログラミングするときに使用することをお勧めします。
どちらの場合も,ObjectRecOffset フィールドまたは ObjectRecPtr フィールドのどちらか一つを使用し なければなりません。両方のフィールドが 0,または両方のフィールドとも 0 以外の場合,
MQRC_OBJECT_RECORDS_ERROR の理由コードで失敗します。
これは入力用のフィールドです。
このフィールドの初期値は 0 です。
このフィールドは,Version フィールドの値が MQGMO_VERSION_2 以降の場合だけ有効です。
● ObjectRecPtr(MQPTR 型) 最初のオブジェクトレコードのアドレス
最初のオブジェクトレコードのアドレスです。ObjectRecPtr フィールドは配布リストがオープンされた ときだけ使用されます。RecsPresent フィールドが 0 の場合は無視されます。
ObjectRecPtr フィールドまたは ObjectRecOffset フィールドのどちらかをオブジェクトレコードに指定 するのに使用できます。指定方法については,「ObjectRecOffset フィールド」を参照してください。
ObjectRecPtr フィールドを使用しない場合は,ヌルポインタかヌル文字列を設定しなければなりません。
これは入力用のフィールドです。
このフィールドの初期値は,ポインタをサポートしているプログラミング言語ではヌルポインタです。文 字列の場合はヌル文字列となります。
このフィールドは,Version フィールドの値が MQGMO_VERSION_2 以降の場合だけ有効です。