Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue 使用の手引


3.3.2 パラメタ

MCAは,次の図に示すパラメタをパラメタリストアドレス(parm)に設定し,UOCの呼び出し時に渡します。

図3‒2 UOCに渡されるパラメタの形式

[図データ]

各パラメタの内容について説明します。

各領域の後ろの括弧は,その領域のデータタイプです。データタイプについては,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

データタイプの次に,その領域の「向き」を示します。つまり,その領域を何が使用し,何が設定するかです。

input

MQTからUOCへ,値が入力される領域です。ユーザは値を変更しないでください。

output

UOCからMQTへ,値を出力するための領域です。

〈この項の構成〉

(1) UOCパラメタリスト(dcmtcq_uoc_parmlist)

UOCパラメタリストは,UOCに渡されるパラメタを管理しています。

dcmtcq_uoc_parmlistの宣言形式
typedef struct {
  MQCHAR4             StructId;            /* 構造体識別子 */
  MQLONG              Version;         /* 構造体バージョン番号 */
  dcmtcq_uoc_mqcxp    *mqcxp_adr;
                   /* チャネル出口パラメタブロックアドレス */
  dcmtcq_uoc_mqcd     *mqcd_adr;
                     /* チャネルデータ定義ブロックアドレス */
  dcmtcq_uoc_bufflist *tbuflist_adr;
                           /* 送受信バッファリストアドレス */
  dcmtcq_uoc_bufflist *ebuflist_adr;
                             /* 編集バッファリストアドレス */
  MQCHAR               Reserve1[8];                /* 予備 */
} dcmtcq_uoc_parmlist;

64ビット版の場合は,次の形式になります。

          :
  MQCHAR               Reserve1[24];                /* 予備 */
} dcmtcq_uoc_parmlist;

(2) チャネル出口パラメタブロック(dcmtcq_uoc_mqcxp)

チャネル出口パラメタブロックは,UOCの処理を決定したり,UOCがMCAの動作を制御したりするために使用されます。

チャネル出口パラメタブロックには,UOCへの入力領域とUOCからの出力領域が両方とも存在するので注意してください。

dcmtcq_uoc_mqcxpの宣言形式
typedef struct {
  MQCHAR4   StructId;         /* 構造体識別子                   */
  MQLONG    Version;          /* 構造体バージョン番号           */
  MQLONG    ExitId;           /* 出口のタイプ                   */
  MQLONG    ExitReason;       /* 出口を呼び出すための理由       */
  MQLONG    ExitReason2;      /* 出口を呼び出すための二次理由   */
  MQLONG    ExitResponse;     /* 出口からの応答                 */
  MQLONG    ExitResponse2;    /* 出口からの二次応答             */
  MQLONG    Feedback;         /* フィードバックコード           */
  MQLONG    MaxSegmentLength; /* セグメント最大長               */
  MQCHAR    Reserve1[4];      /* 予約領域                       */
  MQBYTE16  ExitUserArea;     /* 出口ユーザ領域                 */
  MQCHAR32  ExitData;         /* 出口データ                     */
  MQCHAR    PartnerName[52];  /* 相手システムのキューマネジャ名 */
  MQLONG    FAPLevel;         /* プロトコルレベル               */
  MQLONG    CapabilityFlags;  /* 機能フラグ                     */
} dcmtcq_uoc_mqcxp;

64ビット版の場合は,次の形式になります。

          :
  MQLONG    CapabilityFlags;  /* 機能フラグ                  */
  MQCHAR    Reserve1[8];      /* 予備                        */
} dcmtcq_uoc_mqcxp;

(3) チャネルデータ定義ブロック(dcmtcq_uoc_mqcd)

チャネルデータ定義構造体はチャネルの属性を示すパラメタを持ちます。各領域の内容は特に記述のないかぎり,チャネル定義の内容と同じです(ここでは,TCP定義のmqtalccha定義コマンドの該当するオプションを〔 〕で示します)。また,名称を格納する領域は後ろに\0を格納し,定義で指定できるサイズより大きくなるので注意してください。

また,このパラメタのすべての領域は出口へのExitReasonがDCMTCQ_MQXR_ALTの場合を除き出口の入出力領域です。ExitReasonがDCMTCQ_MQXR_ALTでない場合にUOCが更新すると,その後のチャネルの動作は保証しません。

DCMTCQ_MQXR_ALTの場合に更新できる領域については次の表を参照してください。UOCが更新した値が各領域の指定としては不正であるときは,更新された値を無視して変更前の値でチャネル処理を続行します。

表3‒1 チャネルタイプと有効領域

属性

sender

server

receiver

requester

clussdr

clusrcvr

連絡属性※1

自動定義のクラスタセンダの仮定値

注意事項

ChannelName

あり

Version

DCMTCQ_MQCD_VERSION_7

ChannelType

あり

ClusterName

あり

BatchSize

あり

事前定義クラスタセンダチャネルの場合は,定義値よりも大きくすることはできません。

自動定義クラスタセンダチャネルの場合は,計算値※2よりも大きくすることはできません。

XmitQName

あり

クラスタチャネルはSYSTEM.CLUSTER.TRANSMIT.QUEUE固定です。

MaxMsgLength

あり

BufTypeがメッセージ方式(DCMTCQ_MQBUFT_MSG)の場合は,メッセージ送受信バッファのバッファ長よりも大きくすることはできません。

MaxSegLength

8192

BufTypeがセグメント方式(DCMTCQ_MQBUFT_SEG)の場合は,メッセージ送受信バッファのバッファ長よりも大きくすることはできません。

SeqNumberWrap

あり

BufType

msg

SendBufGroup

1

ReceiveBufGroup

MsgEdtBufGroup

MsgEdtBufCount

StartType

auto

LongRetryType

あり

LongRetryCount

あり

LongRetryInterval

あり

OwnIPAddr

あり※3

両方指定された場合OwnIPAddr指定値が優先されます。

OwnHostName

あり※3

OwnPortNum

あり※3

両方指定された場合OwnPortNum指定値が優先されます。

clusrcvrではOwnServNameはポート番号で相手システムへ連絡します。

OwnServName

PartnerIPAddr

あり

両方指定された場合PartnerIPAddr指定値が優先されます。

事前定義クラスタセンダだけ変更できます。

PartnerHostName

あり

PartnerPortNum

あり

両方指定された場合PartnerPortNum指定値が優先されます。

clussdrではPartnerServNameはポート番号で相手システムへ連絡します。

事前定義クラスタセンダだけ変更できます。

PartnerServName

ConRspRecvInterval

30

RspMsgRecvInterval

30

NextSegRecvInterval

DiscInterval

転送キュー監視方式がタイマ方式の場合に有効です。

DiscIntervalCount

転送キュー監視方式がタイマ方式の場合に有効です。

DiscInterval2

あり

転送キュー監視方式がイベント方式の場合に有効です。

またはクラスタチャネルで有効です。

DiscInterval2Effect

あり

TimeoutConRetry

YES

NextMsgRecvInterval

HeartbeatInterval

あり

BatchInterval

あり

MsgEdtUserData

あり

バッファ方式がメッセージ方式の場合に有効です。

SendUserData

あり

ReceiveUserData

あり

TcpSendBufLength

TcpRecvBufLength

ConvCCSID

あり

クラスタレシーバチャネルでは,システム定義に値を指定すると相手システムがTP1/Message QueueのCCSIDに変更します。

ただし,相手システムはIBM MQだけです。

NonPersistentMsgSpeed

あり

TranQMonType

event

クラスタセンダチャネルの場合は,event固定です。

NetworkPriority

あり

AlterTime

あり

MsgChaProRetry

AdoptCheck

ShortRetryType

あり

ShortRetryCount

あり

ShortRetryInterval

あり

SecurityUserData

あり

SendExit

あり

RcvExit

あり

MsgExit

あり

ScyExit

あり

Descr

あり

MCAUser

あり

MCAType

あり

TcpRetryCount

10

TcpRetryInterval

1

StrucLength

SndJnlIO

flush

BatchMilInterval

あり

OwnPortAltNum

1

OwnPortNum属性(自システムのポート番号)またはOwnServName属性(自システムのサービス名)の指定がある場合に有効です。

(凡例)

●:有効なチャネル属性です。UOCでの変更はできません。

○:有効なチャネル属性です。UOCでの変更はできます。

△:参照だけできます。

−:ありません。

注※1

相手クラスタレシーバチャネルの属性によって値が設定されます。また,自クラスタレシーバチャネルの値が相手に連絡されます。

UOCで変更した属性は,次にチャネルを開始するまで有効です。

注※2

計算値については,「4. 準備作業」の「チャネルのネゴシエーション」を参照してください。

注※3

この属性はclussdrでは相手クラスタレシーバチャネルから連絡されません。

dcmtcq_uoc_mqcdの宣言形式
typedef struct {
  MQCHAR  ChannelName[24];       /* チャネル名 */
  MQLONG  Version;               /* 構造体バージョン番号 */
  MQLONG  ChannelType;           /* チャネルタイプ */
  MQCHAR  ClusterName[52];       /* クラスタ名 */
  MQLONG  BatchSize;             /* バッチサイズ */
  MQCHAR  XmitQName[52];         /* 転送キュー名 */
  MQLONG  MaxMsgLength;          /* 最大メッセージ長 */
  MQLONG  MaxSegLength;          /* 最大セグメントサイズ */
  MQLONG  SeqNumberWrap;         /* メッセージシーケンス番号の
                                                      最大値 */
  MQLONG  BufType;               /* バッファ方式 */
  MQLONG  SendBufGroup;          /* 送信バッファグループ番号 */
  MQLONG  ReceiveBufGroup;       /* 受信バッファグループ番号 */
  MQLONG  MsgEdtBufGroup;        /* メッセージ編集出口バッファ
                                                    グループ番号 */
  MQLONG  MsgEdtBufCount;        /* メッセージ編集出口バッファ数 */
  MQLONG  StartType;             /* チャネル確立方式 */
  MQLONG  LongRetryType;         /* 長期確立再試行の要否 */
  MQLONG  LongRetryCount;        /* 長期確立再試行の回数 */
  MQLONG  LongRetryInterval;     /* 長期確立再試行の間隔 */
  MQCHAR  OwnIPAddr[16];         /* 自ホストのIPアドレス */
  MQCHAR  OwnHostName[256];      /* 自ホストのホスト名 */
  MQCHAR  OwnPortNum[8];         /* 自ホストのポート番号 */
  MQCHAR  OwnServName[36];       /* 自ホストのサービス名 */
  MQCHAR  PartnerIPAddr[16];     /* 相手ホストのIPアドレス */
  MQCHAR  PartnerHostName[256];  /* 相手ホストのホスト名 */
  MQCHAR  PartnerPortNum[8];     /* 相手ホストのポート番号 */
  MQCHAR  PartnerServName[36];   /* 相手ホストのサービス名 */ 
  MQLONG  ConRspRecvInterval;    /* 開始要求応答受信監視
                                                    タイマ値 */
  MQLONG  RspMsgRecvInterval;    /* 確認メッセージ受信監視
                                                    タイマ値 */
  MQLONG  NextSegRecvInterval;   /* 継続セグメント受信監視
                                                    タイマ値 */
  MQLONG  DiscInterval;          /* 転送キュー監視間隔 */
  MQLONG  DiscIntervalCount;     /* 転送キュー監視回数 */
  MQLONG  DiscInterval2;         /* 切断時間間隔 */
  MQLONG  DiscInterval2Effect;   /* 切断時間間隔使用の有無 */
  MQLONG  TimeoutConRetry;       /* タイムアウト時チャネル確立
                                                    再試行の要否 */
  MQLONG  NextMsgRecvInterval;   /* 継続メッセージ受信監視
                                                      タイマ値 */
  MQLONG  HeartbeatInterval;     /* ハートビート間隔 */
  MQLONG  BatchInterval;         /* バッチ終了待ちタイマ値 */
  MQCHAR  MsgEdtUserData[32];    /* メッセージ編集出口
                                                  ユーザデータ */
  MQCHAR  SendUserData[32];      /* 送信出口ユーザデータ */
  MQCHAR  ReceiveUserData[32];   /* 受信出口ユーザデータ */
  MQLONG  TcpSendBufLength;      /* TCP/IP出力用バッファサイズ */
  MQLONG  TcpRecvBufLength;      /* TCP/IP入力用バッファサイズ */
  MQLONG  ConvCCSID;             /* 変換後CCSID */
  MQLONG  NonPersistentMsgSpeed; /* 非永続メッセージ転送速度 */
  MQLONG  TranQMonType;          /* 転送キュー監視方式 */
  MQLONG  NetworkPriority;       /* ネットワーク接続優先順位 */
  MQCHAR  AlterTime[12];         /* チャネル定義の更新時刻 */
  MQLONG  MsgChaProRetry;        /* MQプロトコルエラー時の
                                       チャネル確立再試行の有無 */
  MQLONG  AdoptCheck;            /* チャネル状態の不一致時の
                                                 強制再接続条件 */
  MQLONG  ShortRetryType;        /* 短期確立再試行の要否 */
  MQLONG  ShortRetryCount;       /* 短期確立再試行の回数 */
  MQLONG  ShortRetryInterval;    /* 短期確立再試行の間隔 */
  MQCHAR  SecurityUserData[32];  /* セキュリティ出口ユーザデータ */
  MQCHAR  SendExit[128];         /* チャネル送信出口名 */
  MQCHAR  RcvExit[128];          /* チャネル受信出口名 */
  MQCHAR  MsgExit[128];          /* メッセージ出口名 */
  MQCHAR  ScyExit[128];          /* セキュリティ出口名 */
  MQCHAR  Descr[64];             /* 注釈 */
  MQCHAR  MCAUser[64];           /* MCAユーザID */
  MQLONG  MCAType;               /* MCAタイプ */
  MQLONG  TcpRetryCount;         /* TCP/IP確立確認の回数 */
  MQLONG  TcpRetryInterval;      /* TCP/IP確立確認の間隔 */
  MQLONG  StrucLength;           /* チャネルデータ定義ブロック
                                        (dcmtcq_uoc_mqcd)の長さ */
  MQLONG  SndJnlIO;              /* 送信チャネルジャーナル出力条件 */
  MQLONG  BatchMilInterval;      /* バッチ終了待ちタイマ(ミリ秒) */
  MQLONG  FastSndMsg;            /* 予約領域 */
  MQLONG  OwnPortAltNum;         /* 自システムのポート番号使用数 */
  MQCHAR  Reserve[288];          /*予約領域 */
} dcmtcq_uoc_mqcd;

(4) バッファリスト(dcmtcq_uoc_bufflist)

バッファリストは,メッセージを格納した送受信バッファや,それを編集する場合に使用する編集バッファをやり取りするために使用されます。

dcmtcq_uoc_bufflistの宣言形式
typedef struct {
  MQLONG             Buff_num;     /* バッファ数 */
  MQLONG             Data_buff_num; 
                   /* データを格納する編集用バッファエントリ番号 */
  dcmtcq_uoc_buffinf Buffinf_array[DCMTCQ_UOC_BUFF_MAX];
                                   /* バッファ情報領域 */
} dcmtcq_uoc_bufflist;
 
typedef struct {
  MQLONG  Buff_length;             /* バッファ長 */
  MQLONG  Used_buff_length;        /* 使用バッファ長 */
  MQCHAR  *Buffer_addr;            /* バッファアドレス */
  MQCHAR  Reserve1[4];             /* 予約領域 */
} dcmtcq_uoc_buffinf;

64ビット版の場合は,次の形式になります。

          :
  MQCHAR  *Buffer_addr;            /* バッファアドレス */
} dcmtcq_uoc_buffinf;