配布リストをオープンするにはMQOPEN命令を使用し,配布リストで実行したいことを指定するにはMQOPEN命令のオプションを使用してください。
MQOPEN命令の入力として,次に示す項目を指定してください。
MQOPEN命令の出力を次に示します。
オープンするキューを識別するにはMQOD構造体を使用してください。配布リストを定義するには,VersionフィールドにMQOD_VERSION_2を,RecsPresentフィールドに0より大きい値を,ObjectTypeフィールドにMQOT_Qを指定してください。
MQOR構造体を各あて先に提供してください。この構造体にはあて先キューとキューマネジャの名前があります。配布リストではMQOD構造体のObjectNameおよびObjectQMgrNameフィールドは使用しません。一つ以上のオブジェクトレコードが必要です。ObjectQMgrNameフィールドが空白のままの場合はローカルキューマネジャが使用されます。
あて先キューは次に示す2とおりの方法で指定できます。
MQOD MyMqod;
MQOR MyMqor[100];
MyMqod.ObjectRecPtr = MyMqor;
01 MY-OPEN-DATA.
02 MY-MQOD.
COPY CMQODV.
02 MY-MQOR-TABLE OCCURS 100 TIMES.
COPY CMQORV.
MOVE LENGTH OF MY-MQOD TO MQOD-OBJECTRECOFFSET.
01 MY-MQ-CONSTANTS.
COPY CMQV.
01 MY-OPEN-DATA.
02 MY-MQOD.
COPY CMQODV.
02 MY-MQOR-TABLE OCCURS 100 TIMES.
COPY CMQORV.
MOVE MQOD-CURRENT-LENGTH TO MQOD-OBJECTRECOFFSET.
ObjectRecOffsetまたはObjectRecPtrフィールドのどちらかを使用してください。両方が0の場合,または両方が0でない場合には,MQRC_OBJECT_RECORDS_ERRORの理由コードで命令が失敗します。
この構造体は各あて先に固有な応答レコードです。応答レコードには,配布リストの各キューに対応するCompCodeおよびReasonフィールドがあります。この構造体を使用してユーザは問題を特定できます。
例えば,MQRC_MULTIPLE_REASONSの理由コードを受け取り,配布リストに五つのあて先キューがある場合は,この構造体を使用しないとどのキューに問題があるのか特定できません。しかし,各あて先に完了コードと理由コードがあれば,エラーをより容易に特定できるようになります。
C言語での配布リストのオープンについて,次の図に示します。
図9-2 C言語での配布リストのオープン
COBOL言語での配布リストのオープンについて,次の図に示します。
図9-3 COBOL言語での配布リストのオープン
配布リストのオープン時には,次に示すオプションを指定します。