Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSI-TP編


2.1.9 サービスプリミティブ

TP1/NET/OSI-TPが提供するサービスプリミティブのインタフェースについて説明します。

サービスプリミティブとは,OSIが規定するOSI参照モデルで,それぞれの階層が利用するサービスです。TP1/NET/OSI-TPでは,サービスプリミティブを利用して,メッセージの送受信をします。

サービスプリミティブは,UAPのコーディング時に設定します。このとき,まずUAPの引数を設定してから,使用するサービスプリミティブの領域と具体的な指定値を設定します。また,サービスプリミティブは複数連結して送信できます。

TP1/NET/OSI-TPがメッセージ送受信で提供する基本サービスプリミティブを表2-3に,サービスプリミティブとUAPとの対応を表2-4に,サービスプリミティブの連結パターンとUAPとの対応を表2-5に示します。

表2‒3 基本サービスプリミティブ

サービスプリミティブ

機能

全二重

半二重

制御権あり

制御権なし

送信

受信

送信

受信

TP-BEGIN-DIALOGUEreq/ind

ダイアログ開始要求/指示

TP-BEGIN-DIALOGUErsp/cnf

ダイアログ開始応答/確認

TP-END-DIALOGUEreq/ind

ダイアログ終了要求/指示

×

×

TP-END-DIALOGUErsp/cnf

ダイアログ終了応答/確認

×

×

TP-U-ERRORreq/ind

エラー発生の通知要求/指示

  • TP-HANDSHAKEreq確認型

  • TP-END-DIALOGUEreq

  • TP-HANDSHAKE-AND-GRANT-CONTROLreqに対する拒否応答

TP-U-ABORTreq/ind

UAPでのダイアログ異常終了要求/指示

TP-P-ABORTind

TP1/NET/OSI-TPでのダイアログ異常終了指示

TP-HANDSHAKEreq/ind

ハンドシェイク要求/指示

×

×

TP-HANDSHAKErsp/cnf

ハンドシェイク応答/確認

×

×

TP-DATAreq/ind

データ転送要求/指示

×

×

TP-GRANT-CONTROLreq/ind

制御権委譲要求/指示

×

×

×

TP-REQUEST-CONTROLreq/ind

制御権要求要求/指示

×

×

×

TP-HANDSHAKE-AND-GRANT-CONTROLreq/ind

制御権委譲付きハンドシェイク要求/指示

×

×

×

TP-HANDSHAKE-AND-GRANT-CONTROLrsp/cnf

制御権委譲付きハンドシェイク応答/確認

×

×

×

(凡例)

○:使用できます。

×:使用できません。

−:該当しません。

表2‒4 サービスプリミティブとUAPとの対応

サービス

プリミティブ

UAP

サービスプリミティブ種別コード

C言語

COBOL言語※1

データ操作

言語

TP-BEGIN-DIALOGUE

req

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

ENABLE

BDR

ind

receive

RECEIVE

RECEIVE

BDI

rsp(受諾)

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

ENABLE

BDPA

rsp(拒否)

sendsync

SENDSYNC

DISABLE

BDPN

cnf

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

BDC

TP-END-DIALOGUE

req

  • sendsync

  • sendrecv※2

  • SENDSYNC

  • SENDRECV※2

DISABLE

EDR

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

EDI

rsp

  • sendsync

  • SENDSYNC

DISABLE

EDP

cnf

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

EDC

TP-U-ERROR

req

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

UER

ind

recvsync

RECVSYNC

RECEIVE

UEI

TP-U-ABORT

req

sendsync

SENDSYNC

DISABLE

UAR

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

UAI

TP-P-ABORT

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

PAI

TP-HANDSHAKE

req

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

HSR

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

HSI

rsp

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

HSP

cnf

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

HSC

TP-DATA

req

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

TDR

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

TDI

TP-GRANT-CONTROL

req

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

GCR

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

GCI

TP-REQUEST-CONTROL

req

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

RCR

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

RCI

TP-HANDSHAKE-AND-GRANT-CONTROL

req

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

HGR

ind

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

HGI

rsp

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

HGP

cnf

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

HGC

注※1

COBOL言語のインタフェースは,プログラム名CBLDCMCFで使用するデータ名を示します。

注※2

サービスプリミティブのパラメタConfirmationが'True'の場合だけ使用できます。

表2‒5 サービスプリミティブの連結パターンとUAPとの対応

サービスプリミティブ連結パターンの分類

(サービスプリミティブ連結パターン例)

UAP

C言語

COBOL言語※1

データ操作言語

先頭がBDRまたはBDPA

(BDR+TDR,BDPA+TDRなど)

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

ENABLE

先頭がBDI

(BDI+TDI,BDI+TDI+EDIなど)

receive

RECEIVE

RECEIVE

先頭がBDRまたはBDPAで最後がEDR

(BDPA+TDR+EDR,BDR+TDR+EDR※3など)

  • sendsync

  • sendrecv※2

  • SENDSYNC

  • SENDRECV※2

DISABLE

最後がEDR

(TDR+EDR,BDPA+EDR,HSP+EDRなど)

  • sendsync

  • sendrecv※2

  • SENDSYNC

  • SENDRECV※2

DISABLE

その他の送信

(TDR+HSR,TDR+TDRなど)

  • sendsync

  • sendrecv

  • SENDSYNC

  • SENDRECV

SEND

その他の受信

(TDI+EDI,BDC+TDI,BDC+EDI,BDC+TDI+EDI,TDI+TDIなど)

  • recvsync

  • sendrecv

  • RECVSYNC

  • SENDRECV

RECEIVE

注※1

COBOL言語のインタフェースは,プログラム名CBLDCMCFで使用するデータ名を示します。

注※2

サービスプリミティブのパラメタConfirmationが'True'の場合だけ使用できます。

注※3

この組み合わせではBDRは拒否応答型だけ,EDRは確認型だけ使用できます。

〈この項の構成〉

(1) メッセージの形式

送受信メッセージ

TP1/NET/OSI-TPで送受信するメッセージの形式を次の図に示します。送受信メッセージは,UAPで複数のAPDUを連結し,一括して処理できます。

図2‒16 送受信メッセージの形式

[図データ]

セグメント

セグメントは,UAPが送受信するデータ単位です。セグメントは一つ以上のサービスプリミティブから構成されます。

サービスプリミティブ

サービスプリミティブは,制御情報,パラメタ,およびユーザ情報から構成されます。また,サービスプリミティブは複数連結できます。連結をしない場合,セグメントとサービスプリミティブは1対1に対応し,連結をする場合は1対nに対応します。

パラメタおよびユーザ情報がない場合,または指定しない場合は,LL2またはLL3に(0002)16を設定します。

サービスプリミティブの形式を次の図に示します。

図2‒17 サービスプリミティブの形式

[図データ]

制御情報

制御情報は,転送手順とサービスプリミティブ種別コードから構成されます。サービスプリミティブ種別コードについては,表2-4を参照してください。

制御情報の形式を次の図に示します。

図2‒18 制御情報の形式

[図データ]

パラメタ

パラメタの形式を次の図に示します。該当するパラメタを指定しない場合は,そのパラメタに対応するLLに(0002)16を設定します。

図2‒19 パラメタの形式

[図データ]

ユーザ情報

ユーザ情報は,APDU連結状態とユーザデータから構成されます。

ユーザ情報の形式を,次の図に示します。

図2‒20 ユーザ情報の形式

[図データ]

APDU連結状態は,次に示す値を16進数字で設定します。

(A0):単一APDU(構造化されている)

(80):単一APDU(構造化されていない)

(A1):連結APDU(構造化されている)

(81):連結APDU(構造化されていない)

(A2):ビット列データ(構造化されている)

(82):ビット列データ(構造化されていない)

ユーザデータは,任意のデータを転送構文形式で設定します。

(2) パラメタとの関係

サービスプリミティブは,機能ごとに,設定するパラメタが異なります。

省略した場合,省略したパラメタに対応する領域の長さは(0002)16となります。

サービスプリミティブとパラメタとの対応を次の表に示します。

表2‒6 サービスプリミティブとパラメタとの対応

サービス

プリミティブ

パラメタ1

パラメタ2

パラメタ3

パラメタ4

パラメタ5

パラメタ6

パラメタ7

ユーザ情報の設定

TP-BEGIN-DIALOGUE

req

(1)※1

(2)※1

(3)※1

(4)※2

(5)※1

(6)※2

(7)※2

ind

(1)※3

(4)※2

(7)※2

rsp

(8)※2

cnf

(4)※3

(8)※2

(9)※3

(10)※2

TP-END-DIALOGUE

req

(7)※2

×

ind

(7)※2

×

rsp

×

cnf

×

TP-U-ERROR

req

×

ind

×

TP-U-ABORT

req

ind

(10)※2

TP-P-ABORT

ind

(9)※2

(10)※2

×

TP-HANDSHAKE

req

(11)※3

×

ind

×

rsp

×

cnf

×

TP-DATA

req

ind

TP-GRANT-CONTROL

req

×

ind

×

TP-REQUEST-CONTROL

req

×

ind

×

TP-HANDSHAKE-AND-GRANT-CONTROL

req

(11)※2

×

ind

×

rsp

×

cnf

×

(凡例)

(1):Initiating-TPSU-Title

(2):Recipient-AP-Title

(3):Recipient-TPSU-Title

(4):Functional-Units

(5):Quality-of-Service

(6):Application-Context-Name

(7):Confirmation

(8):Result

(9):Diagnostic

(10):Rollback

(11):Confirmation-Urgency

◎:設定は必須です。

○:設定できます。

×:設定できません。

−:該当しません。

注※1

ユーザが選択して設定できます。設定しない場合は,領域だけを確保してください。

注※2

必ず設定します。

注※3

条件が一致する場合だけ設定できます。

(3) パラメタの詳細

Initiating-TPSU-TitleおよびRecipient-TPSU-Title

[図データ]

●型コード

TPSU名称の型を設定します。

61:T61 String(T61文字列)

PR:Printable String(印字可能文字列)

IN:Integer(整数)

●TPSU-Title

TPSU名称を設定します。名称の長さは最大64バイトです。

Initiating-TPSU-Title:起動側TPSU名称

Recipient-TPSU-Title:受信側TPSU名称

Recipient-AP-Title

[図データ]

●Recipient-AP-Title

受信側AP名称を設定します。TP1/NET/OSI-TPでは,領域だけを設定します。パラメタのLLには(0002)16を設定してください。

Functional-Units

[図データ]

●FU

使用する機能単位を16進数字で設定します。

(40)16:全二重機能を使用します。

(48)16:全二重機能およびハンドシェイク機能を使用します。

(80)16:半二重機能を使用します。

(88)16:半二重機能およびハンドシェイク機能を使用します。

●予備領域

TP1/NET/OSI-TPが使用する領域です。1バイトの長さの領域を設定してください。

Quality-of-Service

[図データ]

●Quality-of-Service

サービス品質を設定します。TP1/NET/OSI-TPでは,領域だけを設定します。パラメタのLLには(0002)16を設定してください。

Application-Context-Name

[図データ]

●Application-Context-Name

アプリケーションコンテキスト名を設定します。TP1/NET/OSI-TPでは,領域だけを設定します。パラメタのLLには(0002)16を設定してください。

Confirmation

[図データ]

●Confirmation

ダイアログ開始および終了の要求に対して,応答が必要かどうかを確認するための値を設定します。

  • ダイアログ開始(TP-BEGIN-DIALOGUE)の場合

    AL:すべての要求に対して,応答が必要です。

    NE:要求を拒否する場合だけ,応答が必要です。

  • ダイアログ終了(TP-END-DIALOGUE)の場合

    TR:応答が必要です。

    FA:応答は必要ありません。

Result

[図データ]

●Result

サービスの要求に対して,受け入れたかどうかの結果を示す値を設定します。

AC:要求を受け入れました。

RP:要求を拒否しました(TP1/NET/OSI-TP)。

RU:要求を拒否しました(UAP)。

Diagnostic

[図データ]

●Diagnostic

診断を示す値を16進数字で設定します。

  • ダイアログ開始(TP-BEGIN-DIALOGUE)の場合

    (0001)16:受信側TPSU名称が定義されていません。

    (0002)16:TPSUが利用できません(永続的)。

    (0003)16:TPSUが利用できません(一時的)。

    (0004)16:受信側TPSU名称の指定が必要です。

    (0005)16:機能単位が提供されていません。

    (0006)16:機能単位の組み合わせが提供されていません。

    (0008)16:その他の理由

  • ダイアログ異常終了(TP-P-ABORT)の場合

    (0001)16:永続的障害が発生しました。

    (0002)16:トランザクションの開始を拒否します。

    (0003)16:一時的障害が発生しました。

    (0004)16:プロトコルエラーです。

    (0005)16:ダイアログ終了同士の衝突が発生しました。

Rollback

[図データ]

●Rollback

ロールバックするかどうかを示す値を設定します。

FA:ロールバックしません。

Confirmation-Urgency

[図データ]

●Confirmation-Urgency

即時確認をするかどうかを示す値を設定します。

ただし,半二重でのハンドシェイク(TP-HANDSHAKE)の場合,設定できません。

UR:即時確認をします。

NR:即時確認をしません。

(4) 突き合わせ項目

メッセージを送受信する場合,TP1/NET/OSI-TPは,相手システムから受信したサービスプリミティブを,自システムで設定したパラメタと突き合わせます。突き合わせたパラメタが一致しない場合は,該当するサービスプリミティブを処理しないで,相手システムに異常を通知します。

サービスプリミティブの突き合わせ項目を,表2-7および表2-8に示します。

表2‒7 サービスプリミティブの突き合わせ項目(コネクション確立時)

突き合わせ項目

チェック内容

protocol-version

version1が設定されていること。

contention-winner-assignment

コネクション定義(mcftalccn -y)で指定した値と対応していること。

注※

MCF通信構成定義との対応については,「6. システム定義」の「相手システムの通信定義と関連づける内容」を参照してください。

表2‒8 サービスプリミティブの突き合わせ項目(ダイアログ開始時)

突き合わせ項目

チェック内容

Functional-Units

Shared Controlまたは

Polarized Control

どちらかが設定されていること。

Handshake

設定されていること,または設定されていないこと。