OpenTP1 Version 7

分散トランザクション処理機能

TP1/Client for .NET Framework 使用の手引

解説・手引・文法・操作書

3000-3-D68-30

目　　次

前書き

変更内容

はじめに

1.　概要

1.1　OpenTP1 for .NET Frameworkとは

1.1.1　OpenTP1 for .NET Frameworkの構成

1.1.2　OpenTP1 for .NET Frameworkの利点

1.2　OpenTP1 for .NET Frameworkを利用したシステム構成

1.2.1　前提条件

1.2.2　クライアント/サーバシステムの形態

1.2.3　WWWサーバ経由での接続

1.2.4　ASP.NET XML Webサービスとの接続

1.2.5　OpenTP1システムとの接続

1.3　OpenTP1 for .NET Frameworkのアプリケーション

1.3.1　ユーザアプリケーションプログラム（UAP）

1.3.2　RPCインタフェース

1.3.3　アプリケーション開発の流れ

2.　機能

2.1　リモートプロシジャコール（RPC）

2.1.1　RPCの形態

2.1.2　RPCの連鎖（連鎖RPC）

2.1.3　RPCの形態によるRPCインタフェースの使用可否

2.1.4　RPCの種類

2.1.5　RPCの機能

2.1.6　マルチスケジューラ機能を使用したRPC

2.2　常設コネクション

2.2.1　常設コネクションの確立・解放

2.2.2　常設コネクションを使用する場合に関連する定義

2.2.3　DCCM3論理端末への端末識別情報の通知

2.2.4　常設コネクションを使用するときの注意事項

2.3　トランザクション制御機能

2.3.1　トランザクション制御機能の概要

2.3.2　トランザクション制御機能を使用する場合の設定

2.3.3　トランザクションの開始と同期点取得

2.3.4　同期点取得

2.3.5　障害発生時のトランザクションの同期点を検証する方法

2.3.6　TP1/Server側での定義に対する注意事項

2.4　TCP/IP通信機能

2.4.1　Client .NETでのTCP/IP通信機能

2.4.2　通信形態

2.4.3　受信メッセージの組み立て機能

2.4.4　TCP/IP通信機能を使用するときの注意事項

2.5　サーバからの一方通知受信機能

2.5.1　一方通知受信機能の処理の流れ

2.5.2　一方通知連続受信機能の処理の流れ

2.5.3　一方通知連続受信機能を使用するときの注意事項

2.5.4　一方通知受信待ち状態の解除

2.6　動的定義変更機能

2.7　ノード間負荷バランス機能

2.8　TCP/IPコネクションの確立の監視機能

2.8.1　内部でconnectメソッドを使用するAPI

2.8.2　connectメソッドがタイムアウトした場合の例外

2.9　トラブルシュート機能

2.9.1　トレースファイル

2.9.2　UAPトレース

2.9.3　データトレース

2.9.4　エラートレース，メモリトレース

2.9.5　メソッドトレース

2.9.6　デバッグトレース

2.9.7　TP1/Serverの性能検証用トレース

2.10　データ圧縮機能

2.10.1　データ圧縮機能の効果

2.10.2　データ圧縮機能を使用するときの注意事項

2.11　MSDTC連携機能

2.12　環境設定

2.12.1　インストール後の環境設定

2.12.2　セキュリティポリシーの設定

2.12.3　メッセージの出力先

2.13　送信元ホスト指定機能

2.14　受信ポート固定機能

3.　構成定義

構成ファイルの形式

hitachi.opentp1.client

common

profile

tp1Server

rpc

rapService

nameService

scheduleService

extendLevel

errTrace

methodTrace

uapTrace

dataTrace

debugTrace

transaction

tcpip

socket

xarTransaction

定義例

4.　UAPの作成と実行

4.1　OpenTP1 for .NET Framework環境でのUAP開発時に必要な定義

4.1.1　.NETインタフェース定義

4.1.2　サービス定義

4.2　.NETインタフェース定義を使用したSPP.NETの呼び出し方法

4.2.1　クライアントスタブの生成

4.2.2　クライアントスタブの使用方法

4.2.3　クライアントスタブ使用時のデータ長の計算方法

4.2.4　.NETインタフェース定義から生成したクライアントスタブの使用例

4.3　サービス定義を使用したSPP.NETまたはSPPの呼び出し方法

4.3.1　クライアントスタブの生成

4.3.2　クライアントスタブの使用方法

4.3.3　クライアントスタブ使用時のデータ長の計算方法

4.3.4　サービス定義から生成したクライアントスタブの使用例

4.4　バイナリデータを使用したSPP.NETまたはSPPの呼び出し方法

4.4.1　バイナリデータを使用する場合の留意事項

4.4.2　バイナリデータを使用する場合のCallメソッドの使用例

4.5　通信形態によるメソッドの発行手順

4.5.1　非オートコネクトモードでリモートAPI機能を使用する場合

4.5.2　オートコネクトモードでリモートAPI機能を使用する場合

4.5.3　ネームサービスを使用したRPCの場合

4.5.4　スケジューラダイレクト機能を使用したRPCの場合

4.5.5　TCP/IP通信機能（一方送信）を使用する場合

4.5.6　TCP/IP通信機能（一方受信）を使用する場合

4.5.7　TCP/IP通信機能（送受信，CUP.NETがクライアント）を使用する場合

4.5.8　TCP/IP通信機能（送受信，CUP.NETがサーバ）を使用する場合

4.5.9　動的定義変更機能を使用する場合

4.6　UAP作成時の注意事項

4.6.1　CUP.NETの実行環境と留意点

4.6.2　例外の捕捉とエラーの判定

4.6.3　COBOL言語を使用する場合の注意事項

4.6.4　クラスライブラリを使用する場合の注意事項

4.7　UAPの実行

4.7.1　サンプルプログラムの使用方法

4.7.2　ノータッチデプロイメントによるCUP.NETの配布

5.　運用コマンド

運用コマンドの種類

if2cstub（クライアントスタブ生成コマンド（.NETインタフェース定義用））

spp2cstub（クライアントスタブ生成コマンド（サービス定義用））

6.　クラスリファレンス

Client .NETで利用できるクラス

DCRpcBindTbl

ErrAcceptCanceledException

ErrBufferOverflowException

ErrClientTimedOutException

ErrCollisionMessageException

ErrConnfreeException

ErrConnRefusedException

ErrFatalException

ErrHazardException

ErrHazardNoBeginException

ErrHeuristicException

ErrHeuristicNoBeginException

ErrHostUndefException

ErrInitializingException

ErrInvalidArgsException

ErrInvalidMessageException

ErrInvalidPortException

ErrInvalidReplyException

ErrIOErrException

ErrMarshalException

ErrMessageTooBigException

ErrNetDownAtClientException

ErrNetDownAtServerException

ErrNetDownException

ErrNoBeginException

ErrNoBufsAtServerException

ErrNoBufsException

ErrNoSuchServiceException

ErrNoSuchServiceGroupException

ErrNotTrnExtendException

ErrNotUpException

ErrProtoException

ErrReplyTooBigException

ErrRMException

ErrRollbackException

ErrRollbackNoBeginException

ErrSecchkException

ErrServerBusyException

ErrServerTimedOutException

ErrServiceClosedException

ErrServiceNotUpException

ErrServiceTerminatedException

ErrServiceTerminatingException

ErrSyserrAtServerException

ErrSyserrException

ErrTestmodeException

ErrTimedOutException

ErrTMException

ErrTrnchkException

ErrTrnchkExtendException

ErrVersionException

IntArrayHolder

IntHolder

IRecordインタフェース

LongArrayHolder

LongHolder

ShortArrayHolder

ShortHolder

StringArrayHolder

StringHolder

TP1Client

TP1ClientError

TP1ClientException

TP1ClientFlags

TP1Error

TP1Exception

TP1MarshalException

TP1RemoteException

TP1RpcMethod

TP1UserException

UByteArrayHolder

UByteHolder

7.　障害運用

7.1　障害の種類と対処方法

7.2　障害時に取得する情報

付録

付録A　DCCM3との接続

付録A.1　DCCM3とのRPC

付録A.2　DCCM3とのTCP/IP通信

付録B　Client .NETで利用できるクラスのフィールド

付録C　バージョンアップ時の変更点

付録C.1　07-03での変更点

付録C.2　07-02での変更点

付録C.3　07-01での変更点

付録C.4　07-00での変更点

付録D　用語解説

索引

[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.

前書き

■ 対象製品

P-2464-7824　 uCosminexus TP1/Client for .NET Framework　 07-03（適用OS：Windows 2000，Windows XP，Windows Server 2003，Windows Vista，Windows Server 2008）

このプログラムプロダクトのほかにもこのマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。
この製品は，ISO9001およびTickITの認証を受けた品質マネジメントシステムで開発されました。

■ 輸出時の注意

本製品を輸出される場合には，外国為替および外国貿易法ならびに米国の輸出管理関連法規などの規制をご確認の上，必要な手続きをお取りください。
なお，ご不明な場合は，弊社担当営業にお問い合わせください。

■ 商標類

ActiveXは，米国およびその他の国における米国Microsoft Corp.の商標です。
Internet Explorerは，米国Microsoft Corporationの米国及びその他の国における登録商標または商標です。
Microsoftは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
MSDNは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
SOAP（Simple Object Access Protocol）は，分散ネットワーク環境においてXMLベースの情報を交換するための通信プロトコルの名称です。
Visual Basicは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Visual Studioは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windowsは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windows Serverは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
Windows Vistaは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
X/Openは，X/Open Company Limited の英国ならびに他の国における登録商標です。

本書には，X/Openの許諾に基づき X/Open CAE Specification System Interfaces and Headers，Issue4，（C202 ISBN 1-872630-47-2）Copyright（C）July 1992， X/Open Company Limited の内容が含まれています;
なお，その一部は IEEE Std 1003.1-1990，（C）1990 Institute of Electrical and Electronics Engineers，Inc.及び IEEE std 1003.2/D12，（C）1992 Institute of Electrical and Electronics Engineers，Inc.を基にしています。

事前に著作権所有者の許諾を得ずに，本書の該当部分を複製，複写及び転記することは禁じられています。

本書には，X/Openの許諾に基づき X/Open X/Open Preliminary Specification Distributed Transaction Processing：The TxRPC Specification（P305 ISBN 1-85912-000-8）Copyright（C）July 1993， X/Open Company Limited の内容が含まれています;

事前に著作権所有者の許諾を得ずに，本書の該当部分を複製，複写及び転記することは禁じられています。

本書には，Open Software Foundation，Inc. が著作権を有する内容が含まれています。
This document and the software described herein are furnished under a license，and may be used and copied only in accordance with the terms of such license and with the inclusion of the above copyright notice. Title to and ownership of the document and software remain with OSF or its licensors.

■ 発行

2006年6月（第1版）3000-3-D68
2008年10月（第4版）3000-3-D68-30

■ 著作権

All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.

変更内容

変更内容（3000-3-D68-30） uCosminexus TP1/Client for .NET Framework　07-03

追加・変更内容
変更個所

開発言語として，COBOL言語に対応した。
これに伴い，次のクラスの説明にCOBOL言語の場合の説明を追加した。

DCRpcBindTbl

IntArrayHolder

IntHolder

LongArrayHolder

LongHolder

ShortArrayHolder

ShortHolder

StringArrayHolder

StringHolder

TP1Client

TP1ClientError

TP1ClientFlag

TP1Error

TP1Exception

TP1RemoteException

TP1UserException

UByteArrayHolder

UByteHolder

1.1.2(2)，1.2.1(1)，1.3.2，1.3.3，4.1.1(1)，4.2，4.3，4.4，4.4.2(4)，4.6.3，4.7.1(1)，4.7.1(2)，4.7.1(3)，6.　DCRpcBindTbl，6.　IntArrayHolder，6.　IntHolder，6.　LongArrayHolder，6.　LongHolder，6.　ShortArrayHolder，6.　ShortHolder，6.　StringArrayHolder，6.　StringHolder，6.　TP1Client，6.　TP1ClientError，6.　TP1ClientFlags，6.　TP1Error，6.　TP1Exception，6.　TP1RemoteException，6.　TP1UserException，6.　UByteArrayHolder，6.　UByteHolder，付録A.1(6)，付録A.2，付録B

Visual Studio 2008に対応した。
1.2.1(1)

Windows SDK 6.1に対応した。
1.2.1(1)，1.2.1(2)，1.2.1(3)

.NET Framework 3.5に対応した。
1.2.1(2)，1.2.1(3)

サービス要求メッセージ受信処理を並行動作させることによって，スケジューリング遅延を回避できるようにした（マルチスケジューラ機能）。
これに伴い，Client .NET構成定義に次の属性を追加した。

<rpc>要素のuseMultiScheduler属性

<scheduleService>要素のmultiSchedulerCount属性

また，Client .NET構成定義の次の属性の説明を変更した。

<scheduleService>要素のport属性

2.1.6，3.　rpc，3.　scheduleService

MCF通信構成定義についての説明を追加した。
2.4.2(2)，2.4.2(3)

従来メインフレームのOLTPでの端末一斉起動と同様の運用ができるようにした（サーバからの一方通知受信機能）。
これに伴い，次のクラス，メソッドを追加した。

ErrAcceptCanceledExceptionクラス

ErrVersionExceptionクラス

TP1Clientクラスの次のメソッド
・AcceptNotification
・AcceptNotificationChained
・CancelNotification
・CloseNotification
・OpenNotification

2.5，2.9.2，6.Client .NETで利用できるクラス，6.　ErrAcceptCanceledException，6.　ErrVersionException，6.　TP1Client

次のTP1Clientクラスのメソッドから，UAPトレースを取得するようにした。

SetUapTraceMode

SetErrorTraceMode

SetMethodTraceMode

SetDataTraceMode

2.9.2

UAPトレースに，性能検証用トレースの識別情報が出力されるようにした。
これに伴い，次のメソッドの呼び出し情報を追加した。

Commit

CommitChained

Rollback

RollbackChained

2.9.2

バージョン07-02以降のTP1/Serverに対して，リモートAPI機能を使用したRPCを行う場合は，スケジューラに送信するRPCメッセージ中への識別情報（IPアドレスなど）を付加できるようにした。
2.9.7(1)

RPCやTCP/IP通信機能でのコネクション確立要求時に，送信元ホストを指定できるようにした（送信元ホスト指定機能）。
これに伴い，Client .NET構成定義の<socket>要素にcupSendHost属性を追加した。
2.13，3.　socket

スケジューラダイレクト機能を使用したRPCの受信ポート，およびネームサービスを使用したRPCの受信ポートを固定できるようにした（受信ポート固定機能）。
これに伴い，Client .NET構成定義の<rpc>要素にcupRecvPort属性を追加した。
2.14，3.　rpc

rapサーバで代理実行するトランザクションブランチの，開始から終了までの最大実行時間を指定できるようにした。
これに伴い，Client .NET構成定義の<transaction>要素にcompletionLimitTime属性を追加した。
3.　transaction

バージョンアップ時の，API，定義，コマンドおよびデフォルト値の変更を記載した。
付録C

単なる誤字・脱字などはお断りなく訂正しました。

変更内容（3000-3-D68-20） uCosminexus TP1/Client for .NET Framework　07-02

追加・変更内容

MSDTCを利用するほかのリソースとOpenTP1が使用するリソースとの間で分散トランザクション連携を実現する，MSDTC連携機能を追加した。これに伴い，構成定義に<xarTransaction>要素を追加した。

DCCM3と接続する場合，CUP.NETからサーバに対する問い合わせの間隔最大時間は，DCCM3の「端末放置監視時間」で指定することを追加した。

変更内容（3000-3-D68-10） uCosminexus TP1/Client for .NET Framework　07-01

追加・変更内容

Windows SDK 6.0を追加した。

.NET Framework Version 3.0を追加した。

常設コネクションを使用してDCCM3論理端末と通信する場合に，CUP.NETに割り当てられるDCCM3の論理端末を固定する，端末識別情報設定機能を追加した。これに伴い，構成定義の<rapService>要素にconnectInformation属性を追加した。
また，TP1Clientクラスに，SetConnectInformationメソッドを追加した。

データ送信時のTCP/IPコネクションの確立処理を監視する，TCP/IPコネクションの確立の監視機能を追加した。これに伴い，構成定義に<socket>要素を追加した。

Windows Vistaを追加した。

はじめに

このマニュアルは，プログラムプロダクトP-2464-7824 uCosminexus TP1/Client for .NET Frameworkの機能と使い方について説明したものです。

本文中に記載されている製品のうち，このマニュアルの対象製品ではない製品については，OpenTP1 Version 7対応製品の発行時期をご確認ください。

＜はじめにの構成＞

対象読者

マニュアルの構成

関連マニュアル

読書手順

図中で使用する記号

文法の記号

このマニュアルでの表記

略語一覧

このマニュアルで使用している記号

常用漢字以外の漢字の使用について

KB（キロバイト）などの単位表記について

対象読者

システム管理者，システム設計者，プログラマ，オペレータの方を対象としています。また，.NET Frameworkを利用したプログラミングの知識を持っていることを前提としています。

マニュアルの構成

このマニュアルは，次に示す章と付録から構成されています。

第1章　概要

OpenTP1 for .NET Frameworkの概要について説明しています。

第2章　機能

TP1/Client for .NET Frameworkの機能について説明しています。

第3章　構成定義

TP1/Client for .NET Frameworkで使用する構成定義について説明しています。

第4章　UAPの作成と実行

TP1/Client for .NET Frameworkで使用するUAPの作成方法と実行手順について説明しています。

第5章　運用コマンド

TP1/Client for .NET Frameworkで使用する運用コマンドについて説明しています。

第6章　クラスリファレンス

TP1/Client for .NET Frameworkで使用するクラスについて説明しています。

第7章　障害運用

TP1/Client for .NET Frameworkで障害が発生した場合の対処方法について説明しています。

付録A　DCCM3との接続

DCCM3とRPC通信する方法について説明しています。

付録B　Client .NETで利用できるクラスのフィールド

TP1/Client for .NET Frameworkで利用できるクラスについて説明しています。

付録C　バージョンアップ時の変更点

各バージョンでのAPI，定義およびメッセージの変更点について説明しています。

付録D　用語解説

TP1/Client for .NET Frameworkに関する用語について説明しています。

関連マニュアル

読書手順

このマニュアルは，利用目的に合わせて，章を選択して読むことができます。次の案内に従ってお読みいただくことをお勧めします。

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

文法の記号

（1）文法記述記号

文法の記述形式について説明する記号です。

文法記述記号
意味

〔　　　〕
この記号で囲まれている項目は省略できることを示します。
（例）spp2tsp 〔-n 名前空間名称〕
これは，「spp2tsp」と指定するか，または「spp2tsp -n 名前空間名称」と指定することを示します。
ただし，構成定義の説明では省略できる項目にこの記号は使用しません。

…
この記号で示す直前の項目を繰り返し指定できることを示します。
（例）-R アセンブリ名称〔,アセンブリ名称〕…
これは，-Rオプションのアセンブリ名称を繰り返し指定できることを示します。

｜
この記号で区切られた項目は選択できることを示します。
（例）watchTimeNotification="true｜false"
これは，watchTimeNotification属性にtrueかfalseのどちらかを指定できることを示します。

｛　　　｝
この記号で囲まれている複数の項目のうちから一つを選択できることを示します。
（例）-l ｛cs｜vjs｜vb｝
これは，cs，vjs，vbの三つのオプションのうち，どれか一つを指定することを示します。

　　（下線）
この記号で示す項目は，該当オプション，要素，属性，またはコマンド引数を省略した場合の仮定値を示します。
（例）-E ｛big｜little｝
これは，オプションの指定を省略した場合，bigオプションを仮定することを示します。

（2）属性表示記号

ユーザ指定値の範囲などを説明する記号です。

属性表示記号 | 意味
～ | この記号のあとにユーザ指定値の属性を示します。
《　　》 | ユーザ指定値を省略した場合の仮定値を示します。
〈　　〉 | ユーザ指定値の構文要素記号を示します。
((　　)) | ユーザ指定値の指定範囲を示します。

（3）構文要素記号

ユーザ指定値の内容を説明する記号です。

構文要素記号
意味

〈英字記号〉
アルファベット（A～Z，a～z）と#，@，¥

〈符号なし整数〉
数字（0～9）

〈識別子〉
先頭がアルファベット（A～Z，a～z）で始まる英数字列

〈記号名称〉
先頭が英字記号で始まる英数字記号列

〈文字列〉
任意の文字の並び

〈パス名〉
記号名称，円記号（¥），およびピリオド（.）の並び
（ただし，パス名は使用しているOSに依存します）

〈ファイル名〉
任意の文字の並び
（ただし，ファイル名は使用しているOS，およびアプリケーションに依存します）

このマニュアルでの表記

このマニュアルでは，製品の名称を省略して表記しています。製品の名称と，このマニュアルでの表記を次に示します。

製品名称 | このマニュアルでの表記
Microsoft(R) .NET Framework Software Development Kit | .NET Framework SDK
Visual C# | C#
COBOL2002 for .NET Framework Developer | COBOL2002 for .NET Framework
COBOL2002 for .NET Framework Server Runtime
COBOL2002 for .NET Framework Server Suite
uCosminexus TP1/Client for .NET Framework | TP1/Client for .NET Framework | Client .NET
uCosminexus TP1/Connector for .NET Framework | TP1/Connector for .NET Framework | Connector .NET
VOS1 DCCM3 | DCCM3
VOS3 XDM/DCCM3
uCosminexus TP1/Extension for .NET Framework | TP1/Extension for .NET Framework | Extension .NET
Visual J# | J#
MSDN(R) | MSDN
uCosminexus TP1/Client/J | TP1/Client/J
uCosminexus TP1/Client/P | TP1/Client/P
uCosminexus TP1/Client/W | TP1/Client/W
uCosminexus TP1/Messaging | TP1/Messaging
uCosminexus TP1/Multi | TP1/Multi
uCosminexus TP1/NET/TCP/IP | TP1/NET/TCP/IP
uCosminexus TP1/LiNK | TP1/LiNK | TP1/Server
uCosminexus TP1/Server Base | TP1/Server Base
Microsoft(R) Visual Studio(R) 2005 Academic Edition | Visual Studio 2005 | Visual Studio
Microsoft(R) Visual Studio(R) 2005 Professional Edition
Microsoft(R) Visual Studio(R) 2005 Standard Edition
Microsoft(R) Visual Studio(R) 2005 Team Edition for Software Architects
Microsoft(R) Visual Studio(R) 2005 Team Edition for Software Developers
Microsoft(R) Visual Studio(R) 2005 Team Edition for Software Testers
Microsoft(R) Visual Studio(R) 2005 Team Suite
Microsoft(R) Visual Studio(R) 2008 Professional Edition | Visual Studio 2008
Microsoft(R) Visual Studio(R) 2008 Standard Edition
Microsoft(R) Visual Studio(R) Team System 2008 Architecture Edition
Microsoft(R) Visual Studio(R) Team System 2008 Development Edition
Microsoft(R) Visual Studio(R) Team System 2008 Database Edition
Microsoft(R) Visual Studio(R) Team System 2008 Team Suite
Microsoft(R) Visual Studio(R) Team System 2008 Test Edition
Microsoft(R) Windows(R) 2000 Advanced Server Operating System | Windows 2000
Microsoft(R) Windows(R) 2000 Datacenter Server Operating System
Microsoft(R) Windows(R) 2000 Professional Operating System
Microsoft(R) Windows(R) 2000 Server Operating System
Microsoft(R) Windows(R) Software Development Kit for Windows Vista(R) and .NET Framework 3.0 Runtime Components | Windows SDK 6.0
Microsoft(R) Windows(R) Software Development Kit for Windows Server(R) 2008 and .NET Framework 3.5 | Windows SDK 6.1
Microsoft(R) Windows Server(R) 2003, Datacenter Edition | Windows Server 2003（32ビット用） | Windows Server 2003
Microsoft(R) Windows Server(R) 2003, Enterprise Edition
Microsoft(R) Windows Server(R) 2003, Standard Edition
Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition
Microsoft(R) Windows Server(R) 2003 R2, Standard Edition
Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition | Windows Server 2003（64ビット用）
Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition
Microsoft(R) Windows Server(R) 2003, Standard x64 Edition
Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition
Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition
Microsoft(R) Windows Server(R) 2008 Datacenter (x86) | Windows Server 2008（32ビット用） | Windows Server 2008
Microsoft(R) Windows Server(R) 2008 Enterprise (x86)
Microsoft(R) Windows Server(R) 2008 Standard (x86)
Microsoft(R) Windows Server(R) 2008 Datacenter (x64) | Windows Server 2008（64ビット用）
Microsoft(R) Windows Server(R) 2008 Enterprise (x64)
Microsoft(R) Windows Server(R) 2008 Standard (x64)
Microsoft(R) Windows Vista(R) Business (x86) | Windows Vista（32ビット用） | Windows Vista
Microsoft(R) Windows Vista(R) Enterprise (x86)
Microsoft(R) Windows Vista(R) Ultimate (x86)
Microsoft(R) Windows Vista(R) Business (x64) | Windows Vista（64ビット用）
Microsoft(R) Windows Vista(R) Enterprise (x64)
Microsoft(R) Windows Vista(R) Ultimate (x64)
Microsoft(R) Windows(R) XP Professional Operating System | Windows XP

TP1/Extension for .NET Framework，TP1/Client for .NET Framework，およびTP1/Connector for .NET Frameworkを総称する場合は，OpenTP1 for .NET Frameworkと表記しています。

Windows 2000，Windows XP，Windows Server 2003，Windows Server 2008，およびWindows Vistaで機能差がない場合，Windowsと表記しています。

略語一覧

このマニュアルで使用する英略語の一覧を次に示します。

英略語 | 英字での表記
ADO | ActiveX Data Object
ADO.NET | ActiveX Data Object for .NET Framework
AP | Application Program
API | Application Programming Interface
ASP | Active Server Pages
CLR | Common Language Runtime
CLS | Common Language Specification
CTS | Common Type System
CUP | Client User Program
CUP.NET | Client User Program for .NET Framework
DB | Data Base
DBMS | Database Management System
DLL | Dynamic Linking Library
EBCDIK | Extended Binary Coded Decimal Interchange Kana Code
GAC | Global Assembly Cache
GUI | Graphical User Interface
HTTP | Hyper Text Transfer Protocol
IIS | Internet Information Services
MHP | Message Handling Program
MSDTC | MicroSoft(R) Distributed Transaction Coordinator
OLTP | Online Transaction Processing
OS | Operating System
PC | Personal Computer
PRF | PeRFormance
RPC | Remote Procedure Call
SOAP | Simple Object Access Protocol
SPP | Service Providing Program
SPP.NET | Service Providing Program for .NET Framework
SUP | Service Using Program
SUP.NET | Service Using Program for .NET Framework
TCP/IP | Transmission Control Protocol/Internet Protocol
TSP | TP1 Service Proxy
UAP | User Application Program
WS | Workstation
WWW | World Wide Web
XA | Extended Architecture
XML | eXtensible Markup Language

このマニュアルで使用している記号

注意

間違いやすい点や注意しなければならない点などについて説明しています。

ポイント

その説明の要点などについて説明しています。

参考

補足的な情報などについて説明しています。

常用漢字以外の漢字の使用について

このマニュアルでは，常用漢字を使用することを基本としていますが，次に示す用語については，常用漢字以外の漢字を使用しています。

個所（かしょ）　伝播（でんぱ）　輻輳（ふくそう）　閉塞（へいそく）　捕捉（ほそく）

KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

1.　概要

TP1/Client for .NET Framework（Client .NET）は，OpenTP1 for .NET Frameworkを構成する三つの製品のうちの一つです。この章ではClient .NETの前提知識として，OpenTP1 for .NET Frameworkの概要について説明します。

＜この章の構成＞

1.1　OpenTP1 for .NET Frameworkとは

1.2　OpenTP1 for .NET Frameworkを利用したシステム構成

1.3　OpenTP1 for .NET Frameworkのアプリケーション

1.1　OpenTP1 for .NET Frameworkとは

近年，クライアント/サーバシステムにWindowsプラットフォームを選択するオンラインシステムが増えています。小さな社内業務システムから社会インフラを担う基幹システムまで，あらゆるオンラインシステムがWindowsプラットフォーム上で構築されるようになりました。

OpenTP1 for .NET Frameworkは，OpenTP1をMicrosoftの.NET Frameworkに対応させることによって，.NET Frameworkの持つシステム開発の柔軟性，高生産性とOpenTP1の持つ分散トランザクションシステムとしての信頼性を融合し，Windowsプラットフォーム上で高いシステム生産性，運用性を持つ次世代基幹システムの基盤を提供します。

OpenTP1 for .NET Frameworkの概要を次の図に示します。

図1-1　OpenTP1 for .NET Frameworkの概要

＜この節の構成＞

1.1.1　OpenTP1 for .NET Frameworkの構成

1.1.2　OpenTP1 for .NET Frameworkの利点

1.1.1　OpenTP1 for .NET Frameworkの構成

OpenTP1 for .NET Frameworkは次の表に示す三つの製品から構成されます。

これらの製品は，それぞれCLS準拠のクラスライブラリを提供します。

表1-1　OpenTP1 for .NET Frameworkの構成

製品名称
機能概要

TP1/Extension for .NET Framework
.NET Framework環境でOpenTP1のサーバアプリケーションを開発し，動作させるための製品です。TP1/Extension for .NET Frameworkには，前提製品としてTP1/Server BaseまたはTP1/LiNKが必要です。

TP1/Client for .NET Framework
.NET Framework環境でOpenTP1のクライアントアプリケーションを開発するための機能を提供します。

TP1/Connector for .NET Framework
TP1/Client for .NET Frameworkと連携して，WWWサーバ（IISのASP.NET環境）などの.NET Framework環境から，OpenTP1のサーバに対してサービスを要求する場合に使用します。
マルチスレッド環境でコネクションプーリング，バッファプーリングなどの機能を提供します。
TP1/Connector for .NET Frameworkには，前提製品としてTP1/Client for .NET Frameworkが必要です。

なお，このマニュアルでは，これらの製品を次の表に示すように表記します。

表1-2　OpenTP1 for .NET Frameworkの製品名称とこのマニュアルでの表記

製品名称 | このマニュアルでの表記
TP1/Extension for .NET Framework | Extension .NET
TP1/Client for .NET Framework | Client .NET
TP1/Connector for .NET Framework | Connector .NET

1.1.2　OpenTP1 for .NET Frameworkの利点

.NET Frameworkに対応したOpenTP1 for .NET Frameworkを使用すると，次のような利点があります。

＜この項の構成＞

(1)　高信頼/高性能

(2)　アプリケーション開発環境の拡充

(3)　ASP.NET XML Webサービスの利用

(4)　OpenTP1システムとの親和性

(1)　高信頼/高性能

OpenTP1が持つトランザクション制御機能，スケジューリング制御機能，プロセス管理機能，障害回復機能などを.NET Framework環境で利用できます。

(2)　アプリケーション開発環境の拡充

.NET Frameworkの活用によって，OpenTP1のアプリケーションを開発する言語をC#，J#，Visual Basic，およびCOBOL言語から柔軟に選択できます。
また，サーバアプリケーションからクライアントアプリケーションまでを，一貫して同一のプログラム言語で開発することもできます。

.NET Frameworkが持つ優れた開発環境やライブラリなどを活用することによって，アプリケーション開発を迅速に行うことができます。これによって，システム構築に掛かる時間を短縮し，システム開発の生産性の向上が図れます。
また，Visual Studioと連携した，OpenTP1 for .NET Frameworkのアプリケーション作成ウィザードや，デバッグ支援機能が利用できます。

(3)　ASP.NET XML Webサービスの利用

ASP.NET XML WebサービスやASP.NETなどに代表されるMicrosoftのアプリケーション開発技術を，OpenTP1環境で利用できます。
これによって，OpenTP1のサービスを，ASP.NET XML Webサービスとして公開できます。

定義されたインタフェース情報からASP.NET XML Webサービスを自動生成する機能が利用できます。

(4)　OpenTP1システムとの親和性

サービス関数のインタフェースをサービス定義として定義することによって，C言語，C++言語，およびCOBOL言語で作成したOpenTP1の基幹業務アプリケーションを.NET Framework環境から呼び出すことができます。

1.2　OpenTP1 for .NET Frameworkを利用したシステム構成

OpenTP1 for .NET Frameworkを利用したシステム構成について説明します。

＜この節の構成＞

1.2.1　前提条件

1.2.2　クライアント/サーバシステムの形態

1.2.3　WWWサーバ経由での接続

1.2.4　ASP.NET XML Webサービスとの接続

1.2.5　OpenTP1システムとの接続

1.2.1　前提条件

ここでは，システムを利用するための前提条件について説明します。

＜この項の構成＞

(1)　UAPを開発する場合

(2)　Client .NETを使用する場合

(3)　Connector .NETを使用する場合

(1)　UAPを開発する場合

UAPを開発する場合に必要なソフトウェアについて，開発言語ごとに説明します。

(a)　開発言語としてC#またはVisual Basicを使用するとき

開発言語としてC#またはVisual Basicを使用するときは，次のソフトウェアのどれかが必要になります。

Visual Studio

Visual Studio 2005またはVisual Studio 2008

Visual J# .NET Version 2.0 再頒布可能パッケージ

.NET Framework SDK Version 2.0

Windows SDK 6.0 またはWindows SDK 6.1

(b)　開発言語としてJ#を使用するとき

開発言語としてJ#を使用するときは，次のソフトウェアのどれかが必要になります。

Visual Studio

Visual Studio 2005

Visual J# .NET Version 2.0 再頒布可能パッケージ

.NET Framework SDK Version 2.0

Windows SDK 6.0 またはWindows SDK 6.1

(c)　開発言語としてCOBOL言語を使用するとき

開発言語としてCOBOL言語を使用するときは，次のソフトウェアが必要になります。

COBOL2002 for .NET Framework Developer

COBOL2002 for .NET Framework Server Runtime

COBOL2002 for .NET Framework Server Suite

(2)　Client .NETを使用する場合

Client .NETをインストールする前に，次に示すソフトウェアがインストールされている必要があります。

.NET Framework
.NET Frameworkのバージョンは，次のどれかです。

.NET Framework Version 2.0

.NET Framework Version 3.0

.NET Framework Version 3.5

.NET Framework SDK Version 2.0，またはWindows SDK
Windows SDKのバージョンは，次のどちらかです。

Windows SDK 6.0

Windows SDK 6.1

Visual J# .NET Version 2.0 再頒布可能パッケージ

(3)　Connector .NETを使用する場合

Connector .NETをインストールする前に，次に示すソフトウェアがインストールされている必要があります。

Client .NET 07-02以降

.NET Framework
.NET Frameworkのバージョンは，次のどれかです。

.NET Framework Version 2.0

.NET Framework Version 3.0

.NET Framework Version 3.5

.NET Framework SDK Version 2.0，またはWindows SDK
Windows SDKのバージョンは，次のどちらかです。

Windows SDK 6.0

Windows SDK 6.1

Visual J# .NET Version 2.0 再頒布可能パッケージ

1.2.2　クライアント/サーバシステムの形態

Client .NETを使用することで，.NET Framework環境で動作するOpenTP1のクライアントアプリケーション（GUI画面アプリケーションなど）を作成できます。

また，Extension .NETを使用することで，.NET Framework環境で動作するOpenTP1のサーバアプリケーション（基幹業務アプリケーションなど）を作成できます。

このように，クライアントアプリケーションからサーバアプリケーションまで，一貫して.NET Framework環境で開発できます。

OpenTP1 for .NET Frameworkを利用したクライアント/サーバシステムのシステム構成例を次の図に示します。

図1-2　OpenTP1 for .NET Frameworkを利用したクライアント/サーバシステムのシステム構成例

.NET Framework環境では，リモートプロシジャコール（RPC）のインタフェース情報を.NETインタフェース定義に定義します。この.NETインタフェース定義から運用コマンドを使用して，クライアントスタブ，サーバスタブを生成します。

RPCメッセージのデータ変換（文字コード変換，エンディアン変換など）は，これらクライアントスタブ，サーバスタブが自動的に行います。

1.2.3　WWWサーバ経由での接続

クライアントとなるWebブラウザから，WWWサーバ（IIS）を経由してOpenTP1サーバ上の基幹業務アプリケーションにアクセスできます。

WWWサーバ上でClient .NETとConnector .NETを使用することによって，ASP.NET Webアプリケーションである画面制御アプリケーションから，OpenTP1を経由してバックエンドの基幹業務アプリケーションを呼び出すことができます。

Connector .NETは，マルチスレッド環境でコネクションプーリング機能やバッファプーリング機能などを提供します。

WWWサーバ経由でOpenTP1のサーバに接続する場合のシステム構成例を次の図に示します。

図1-3　WWWサーバ経由でOpenTP1サーバに接続する場合のシステム構成例

1.2.4　ASP.NET XML Webサービスとの接続

OpenTP1 for .NET Frameworkを使用することで，OpenTP1のサービスをASP.NET XML Webサービスとして公開できます。

WWWサーバ上でClient .NETとConnector .NETを使用することによって，ASP.NET環境で動作するXML Webサービスアプリケーションから，バックエンドの基幹業務アプリケーションを呼び出すことができます。

ASP.NET XML WebサービスからOpenTP1サーバに接続する場合のシステム構成例を次の図に示します。

図1-4　ASP.NET XML WebサービスからOpenTP1サーバに接続する場合のシステム構成例

WWWサーバ（IIS）上で動作するアプリケーションが，HTTPを受けて動作するか，SOAPを受けて動作するかという点が，WWWサーバ経由でOpenTP1サーバに接続する場合と異なります。

1.2.5　OpenTP1システムとの接続

OpenTP1 for .NET Frameworkは，OpenTP1システム（TP1/Server BaseおよびTP1/LiNK）と接続することによって，次のことができます。

OpenTP1システムのクライアントアプリケーション（CUP）からのOpenTP1 for .NET Framework環境の基幹業務アプリケーション（SPP.NET）の呼び出し

OpenTP1 for .NET Framework環境のクライアントアプリケーション（CUP.NET）からの基幹業務アプリケーション（SPP）の呼び出し

OpenTP1システムと接続する場合のシステム構成例を次に示します。

図1-5　OpenTP1システムと接続する場合のシステム構成例

注※1

TP1/Client/P，TP1/Client/W，またはTP1/Client/J

注※2

OpenTP1の形式のRPC

注※3

カスタムレコードを使用したRPC

注※4

バイナリデータを使用したRPC

基幹業務アプリケーション（SPP）のRPCインタフェースが固定の場合，サービス定義にインタフェース情報を定義します。このサービス定義から，クライアントスタブ，およびカスタムレコードクラスを生成します。

.NET Framework環境のクライアントアプリケーション（CUP.NET）は，生成されたクライアントスタブ，カスタムレコードクラスを使用して基幹業務アプリケーション（SPP）を呼び出すことができます。

なお，バイナリデータを使用するRPCインタフェースを利用して，基幹業務アプリケーション（SPP）を呼び出すこともできます。

1.3　OpenTP1 for .NET Frameworkのアプリケーション

＜この節の構成＞

1.3.1　ユーザアプリケーションプログラム（UAP）

1.3.2　RPCインタフェース

1.3.3　アプリケーション開発の流れ

1.3.1　ユーザアプリケーションプログラム（UAP）

OpenTP1 for .NET Frameworkでは，次のUAPを利用できます。

また，OpenTP1 for .NET FrameworkのUAPとOpenTP1のSPP，SUP，CUPの間でRPCを実行できます。

＜この項の構成＞

(1)　SPP.NET

(2)　SUP.NET

(3)　CUP.NET

(1)　SPP.NET

SPP.NETは，Extension .NET上で動作する，マネージコードで記述されたサーバUAPです。SPP.NETは，クライアントUAPから要求されたサービスを実行します。

SPP.NETは，Extension .NETが提供するランタイムホストで実行されます。

SPP.NETの詳細については，マニュアル「TP1/Extension for .NET Framework 使用の手引」のSPP.NETについての記述を参照してください。

(2)　SUP.NET

SUP.NETは，Extension .NET上で動作する，マネージコードで記述されたクライアントUAPです。SUP.NETは，SPP.NETまたはSPPに対してサービスを要求します。

SUP.NETは.NET Frameworkが提供するランタイムホストで実行されます。

SUP.NETの詳細については，マニュアル「TP1/Extension for .NET Framework 使用の手引」のSUP.NETについての記述を参照してください。

(3)　CUP.NET

CUP.NETは，Client .NETまたはConnector .NETを利用する，マネージコードで記述されたクライアントUAPです。CUP.NETは，SPP.NETまたはSPPに対してサービスを要求します。

CUP.NETは，Windowsフォームアプリケーション，ASP.NET Webアプリケーション，ASP.NET XML Webサービスなど，さまざまなアプリケーション形態が可能であり，形態に応じたランタイムホストで実行されます。

1.3.2　RPCインタフェース

OpenTP1 for .NET FrameworkのUAPから，サービス要求をする場合のRPCインタフェースには次の3種類があります。

.NETインタフェース定義を使用したRPC

サービス定義（カスタムレコード）を使用したRPC

バイナリデータ（インデクスドレコード）を使用したRPC

ただし，開発言語がCOBOL言語の場合，.NETインタフェース定義を使用したRPC，およびサービス定義を使用したRPCには対応していません。

それぞれのRPCインタフェースについて説明します。

＜この項の構成＞

(1)　.NETインタフェース定義を使用したRPC

(2)　サービス定義（カスタムレコード）を使用したRPC

(3)　バイナリデータ（インデクスドレコード）を使用したRPC　

(1)　.NETインタフェース定義を使用したRPC

.NETインタフェース定義から運用コマンドでサーバスタブ，およびクライアントスタブを生成して使用します。これによって，.NET Frameworkのクラスのメソッド呼び出しと同様の形式でRPCが行えます。また，.NET Frameworkのデータ型をパラメタや戻り値として送受信できます。

OpenTP1 for .NET Frameworkを使用したクライアント/サーバシステムの場合に適しています。

.NETインタフェース定義を使用したRPCの概要を次の図に示します。

図1-6　.NETインタフェース定義を使用したRPCの概要

注※1

クライアントUAPには次のUAPが該当します。

SPP.NET

SUP.NET

CUP.NET（Connector .NETを使用するアプリケーションを含みます）

注※2

サービス定義から生成されるクライアントスタブとは異なるものです。

注※3

スタブがRPCデータの文字コードの自動変換，およびエンディアンの自動識別をします。

(2)　サービス定義（カスタムレコード）を使用したRPC

SPP.NETまたはSPPの入出力データ形式とサービス名をサービス定義として定義します。

このサービス定義から運用コマンドでカスタムレコードとクライアントスタブを生成して使用します。

クライアント側では.NET Frameworkのデータ型で入出力データの設定や参照ができます。また，サーバとのプラットフォームやプログラム言語，文字コードなどの違いをユーザが意識することなくアプリケーションを作成できます（運用コマンドでスタブを生成する際に，文字コードやエンディアンなどを指定します）。

OpenTP1 for .NET Framework環境のクライアントから，SPPにアクセスする場合などに適しています。

サービス定義（カスタムレコード）を使用したRPCの概要を次の図に示します。

図1-7　サービス定義（カスタムレコード）を使用したRPCの概要

注※1

クライアントUAPには次のUAPが該当します。

SPP.NET

SUP.NET

CUP.NET（Connector .NETを使用するアプリケーションを含みます）

注※2

.NETインタフェース定義から生成されるクライアントスタブとは異なるものです。

注※3

スタブがRPCデータの文字コードの自動変換，およびエンディアンの自動識別をします。

(3)　バイナリデータ（インデクスドレコード）を使用したRPC　

バイナリデータ（バイト配列型）の集合を入力用レコード，および出力用レコードに設定して使用します。

Connector .NETで，バイナリデータを使用したRPCを実行する場合は，インデクスドレコードを使用します。

バイナリデータ（インデクスドレコード）を使用したRPCの場合，クライアントとサーバのプラットフォームやプログラム言語，文字コードなどの違いをユーザが意識する必要があります。

OpenTP1 for .NET Framework環境以外のクライアントからSPP.NETにアクセスする場合などに適しています。

バイナリデータ（インデクスドレコード）を使用したRPCの概要を次の図に示します。

図1-8　バイナリデータ（インデクスドレコード）を使用したRPCの概要

注※

クライアントUAPには次のUAPが該当します。

SPP.NET

SPP

SUP.NET

SUP

CUP.NET（Connector .NETを使用するアプリケーションを含みます）

CUP

1.3.3　アプリケーション開発の流れ

新規にクライアント/サーバシステムを開発する場合，およびクライアントだけを開発して既存のサービスを利用する場合のアプリケーション開発の流れを，RPCインタフェースごとに，次の図に示します。

図1-9　アプリケーション開発の流れ（RPCインタフェースに.NETインタフェース定義，またはサービス定義を使用する場合）

図1-10　アプリケーション開発の流れ（RPCインタフェースにバイナリデータを使用する場合）

2.　機能

この章では，Client .NETの機能について説明します。なお，必要に応じて次のマニュアルも参照してください。

・「OpenTP1 解説」

・「TP1/LiNK 使用の手引」

＜この章の構成＞

2.1　リモートプロシジャコール（RPC）

2.2　常設コネクション

2.3　トランザクション制御機能

2.4　TCP/IP通信機能

2.5　サーバからの一方通知受信機能

2.6　動的定義変更機能

2.7　ノード間負荷バランス機能

2.8　TCP/IPコネクションの確立の監視機能

2.9　トラブルシュート機能

2.10　データ圧縮機能

2.11　MSDTC連携機能

2.12　環境設定

2.13　送信元ホスト指定機能

2.14　受信ポート固定機能

2.1　リモートプロシジャコール（RPC）

CUP.NETは，SPP.NETまたはSPPとリモートプロシジャコール（RPC）を使って通信できます。

CUP.NETからサービスを要求するメソッドを呼び出し，RPCによってSPP.NETまたはSPPにサービスを要求します。サービスを要求する方法には，クライアントスタブを利用する方法とクライアントスタブを利用しない方法があります。

サービスを要求するUAPとサービスを提供するUAPは，クライアントとサーバの関係になります。サービスを要求する側のUAPをクライアントUAP，サービスを提供する側のUAPをサーバUAPといいます。

＜この節の構成＞

2.1.1　RPCの形態

2.1.2　RPCの連鎖（連鎖RPC）

2.1.3　RPCの形態によるRPCインタフェースの使用可否

2.1.4　RPCの種類

2.1.5　RPCの機能

2.1.6　マルチスケジューラ機能を使用したRPC

2.1.1　RPCの形態

Client .NETのRPCには，次に示す2種類の形態があります。

同期応答型RPC

非応答型RPC

Extension .NETを使用すると，非同期応答型RPCを利用できます。非同期応答型RPCについては，マニュアル「TP1/Extension for .NET Framework 使用の手引」を参照してください。

RPCの形態別の処理概要を次の図に示します。

図2-1　RPCの形態別の処理概要

＜この項の構成＞

(1)　同期応答型RPC

(2)　非応答型RPC

(1)　同期応答型RPC

クライアントUAPからサーバUAPに問い合わせメッセージを送信し，問い合わせた応答メッセージを受け取る形態です。クライアント側ではサーバからの応答を受け取るまでメソッドがリターンしません。同一のサービスを複数回呼び出した場合，サーバプロセスはそのつどスケジュールされます。

(2)　非応答型RPC

クライアントUAPからサーバUAPにメッセージを送信し，応答は受け取らない形態です。クライアント側ではサーバへのメッセージの送信が完了するとメソッドがリターンします。ただし，何らかの通信障害や呼び出したサービスが誤っていてもエラーを受け取ることができないため，注意が必要です。

2.1.2　RPCの連鎖（連鎖RPC）

サーバUAPの実行プロセスは，マルチサーバ（同じサーバUAPを複数のプロセスで同時に起動する機能）の場合，サービスが要求されるたびに起動されます。一つのクライアントUAPから同じサービスグループを2回以上呼び出したとき，そのサービスグループのサーバUAPが以前と同じプロセスで実行されるとは限りません。

ただし，同期応答型RPCで，かつ同じサービスグループに属するサービスを2回以上要求する場合に限り，そのサービスを以前と同じプロセスで実行させることができます。これを連鎖RPCといいます。

連鎖RPCでサービスを要求すると，マルチサーバのサーバUAPでも前回のRPCと同じプロセスで実行されるため，トランザクション処理に必要なプロセスを最小限にできます。UAPのプロセスはサービスグループごとに確保されるため，同じサービスグループに属していれば，異なるサービスに対しても一つのプロセスでサービスを実行できます。

なお，トランザクションとして連鎖RPCを使用する場合は，一つのグローバルトランザクションで動作します。

2.1.3　RPCの形態によるRPCインタフェースの使用可否

CUP.NETからサービス要求をする場合の，RPCの形態によるRPCインタフェースの使用可否を次の表に示します。

なお，RPCの形態については「2.1.1　RPCの形態」および「2.1.2　RPCの連鎖（連鎖RPC）」を参照してください。RPCインタフェースの詳細については「1.3.2　RPCインタフェース」を参照してください。

表2-1　RPCの形態によるRPCインタフェースの使用可否

RPCの形態 | RPCインタフェース
.NETインタフェース定義を使用したRPC | サービス定義（カスタムレコード）を使用したRPC | バイナリデータを使用したRPC
同期応答型RPC | ○ | ○ | ○
非同期応答型RPC | × | × | ×
非応答型RPC | ○※ | ○ | ○
連鎖RPC | ○ | ○ | ○

（凡例）

○：使用できます。

×：使用できません。

注※

呼び出すメソッドの戻り値のデータ型がSystem.Voidで，かつ引数が値渡しだけの場合に使用できます。それ以外の場合はRPC要求時に例外が発生します。

2.1.4　RPCの種類

Client .NETでは，次のRPCを使用できます。

リモートAPI機能を使用したRPC

ネームサービスを使用したRPC

スケジューラダイレクト機能を使用したRPC

通信先を指定したRPC

＜この項の構成＞

(1)　リモートAPI機能を使用したRPC

(2)　ネームサービスを使用したRPC

(3)　スケジューラダイレクト機能を使用したRPC

(4)　通信先を指定したRPC

(1)　リモートAPI機能を使用したRPC

リモートAPI機能を使って，クライアント側のノードにあるUAPが発行したAPIを，OpenTP1がサーバ側に転送してサーバ側のプロセスで代理実行することができます。

リモートAPI機能を要求するクライアント側のノードにあるUAPをrapクライアントといいます。rapクライアントが発行したAPIを，OpenTP1のrapリスナーが受け付け，rapサーバがサーバ側のノードで実行します。rapリスナー，rapサーバはOpenTP1のユーザサービスとして動作します。

リモートAPI機能を使用したRPCでは，OpenTP1上のrapサーバを経由してサービスを要求します。リモートAPI機能を使用すると，Client .NETから確立したコネクションを常に使用してサービスの要求や応答の受信ができます。したがって，ファイアウォールの内側にあるUAPに対しても，サービスを要求できます。

リモートAPI機能を使用したRPCを行う場合は，必ず常設コネクションを確立してください。常設コネクションについては，「2.2　常設コネクション」を参照してください。

リモートAPI機能を使用したRPCを行う場合で，OpenRpcメソッドを呼び出すときは，Client .NET構成定義の<rpc>要素のuse属性にrapを指定し，かつClient .NET構成定義の<rapService>要素を指定します。

リモートAPI機能を使用したサービス要求の流れを次に示します。

図2-2　リモートAPI機能を使用したサービス要求の流れ

TP1Clientクラスのインスタンスを作成します。

OpenConnectionメソッドを呼び出し，OpenTP1上のrapリスナーを経由して，rapサーバとの間に常設コネクションを確立します。

Callメソッドを呼び出して，rapサーバ経由で該当するSPP.NETまたはSPPにサービスを要求します。

CloseConnectionメソッドを呼び出して，OpenTP1上のrapサーバとの間の常設コネクションを解放します。

(2)　ネームサービスを使用したRPC

OpenTP1のネームサービスを使用したRPCを発行できます。

ネームサービスを使用したRPCでは，サービスを要求する前にOpenRpcメソッドを呼び出す必要があります。また，CUP.NETの実行の最後にCloseRpcメソッドを呼び出す必要があります。

ネームサービスを使用したRPCの流れと，RPCごとにサービス要求先スケジューラを分散させる場合の定義について説明します。

(a)　ネームサービスを使用したRPCの流れ

ネームサービスを使用したRPCを行う場合は，Client .NET構成定義の<rpc>要素のuse属性にnamを指定し，かつClient .NET構成定義の<nameService>要素を指定します。

ネームサービスを使用したサービス要求の流れを次に示します。

図2-3　ネームサービスを使用したサービス要求の流れ

TP1Clientクラスのインスタンスを作成します。

OpenRpcメソッドを呼び出して，CUP.NETのRPC環境を初期化します。

Callメソッドを呼び出して，該当するSPP.NETまたはSPPにサービスを要求します。※

CloseRpcメソッドを呼び出して，RPC環境を解放します。

注※

Callメソッド内部の処理の流れを次に示します。

指定されたnamサーバに対してコネクションを確立します。

namサーバにサービス情報取得要求を送信し，namサーバとの間で確立したコネクションを解放します。

namサーバから応答メッセージ送信用のコネクション確立要求を受信後，コネクションを確立してサービス情報を受信します。

サービス情報の受信後，namサーバとのコネクションを解放します。

namサーバからの応答メッセージ中のサービス情報を基に，サービスを実行しているOpenTP1上のscdサーバに対してコネクションを確立します。

scdサーバとのコネクション確立後，サービス要求メッセージを送信してコネクションを切断します。

SPP.NETまたはSPPから応答メッセージ送信用のコネクション確立要求を受信後，コネクションを確立して応答メッセージを受信します。

SPP.NETまたはSPPとの間で確立したコネクションを解放します。

(b)　RPCごとにサービス要求先スケジューラを分散させる場合の定義

ネームサービスを使用したRPCでは，サービス要求先スケジューラの情報をネームサーバからキャッシュに格納し，キャッシュの情報を参照してRPCごとにサービス要求先スケジューラを分散させることができます。RPCごとにサービス要求先スケジューラを分散させる場合のClient .NET側，TP1/Server側の関連する定義について説明します。

●Client .NET側の定義

RPCごとにサービス要求先スケジューラを分散させる場合は，<nameService>要素のloadBalance属性にtrueを指定します。

これによって，Client .NETは，ネームサーバから複数のサービス要求先スケジューラの情報を取得し，負荷レベルが最も低いサービス要求先スケジューラの情報をキャッシュに格納します。キャッシュに格納されるサービス要求先スケジューラは，一つだけではなく，複数の場合もあります。

キャッシュに格納されたサービス要求先スケジューラが複数ある場合，最初のサービス要求先スケジューラは，ランダムに選択されます。RPCでのサービス要求が2度目以降の場合は，サービス要求先スケジューラの情報を取得するためにキャッシュを参照し，RPCごとにラウンドロビン方式でサービス要求先スケジューラを切り替え，分散させます。

キャッシュの有効期限の指定

<nameService>要素のcacheTime属性で，サービス要求先スケジューラの情報を保持する，キャッシュの有効期限を指定できます。

キャッシュにサービス要求先スケジューラの情報を格納したあとで，キャッシュの有効期限を満了した場合，そのサービス要求先スケジューラの情報を破棄します。その後，サービス要求先スケジューラの情報を再度取得して，その情報をキャッシュに格納することで，キャッシュを更新します。

<nameService>要素のcacheTime属性は，<nameService>要素のloadBalance属性にtrueを指定した場合だけ有効になります。

●TP1/Server側の定義

次に示すTP1/Server側の定義のオペランドを指定すると，ネームサーバからサービス要求先スケジューラの情報を取得するときに，スケジューラの負荷情報も同時に取得します。

スケジュールサービス定義

scd_announce_server_status=Y（デフォルト）※1

ユーザサービス定義，またはユーザサービスデフォルト定義

loadcheck_interval

levelup_queue_count※2

leveldown_queue_count※2

注※1

このオペランドにNを指定した場合，スケジューラの負荷レベルは常にLEVEL0（負荷が低い状態）になります。負荷レベルが常にLEVEL0のスケジューラが，Client .NETのサービス要求先スケジューラになった場合，実際の負荷状態に関係なく，常にサービス要求先スケジューラとして選択されます。

注※2

負荷レベルがサービス要求の滞留数で決まる方式とする場合に指定します。

上記の定義の詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

(c)　マルチホームドホスト形態のTP1/Serverに対してRPCを行う場合の定義

ネームサービスを使用したRPCでは，通信先TP1/Serverがマルチホームドホスト形態の場合に通信障害が発生することがあります。これは，CUP.NETが存在するネットワークから，通信先TP1/Serverのシステム共通定義のmy_hostオペランドで指定したホスト名（IPアドレス）に対応するネットワークアダプタに通信できないことが原因です。

これを回避するためには，Client .NET側で，<nameService>要素のmultiHomedHost属性にtrueを指定します。ネットワークの構成例を次の図に二つ示し，それぞれのネットワーク構成でのmultiHomedHost属性の定義の要否を示します。

図2-4　マルチホームドホスト形態のTP1/Serverに対してRPCを行う場合の例

ネットワーク構成例2のCUP.NETがIPアドレス4と通信するには，<nameService>要素のmultiHomedHost属性にtrueの指定が必要です。この指定がない場合，CUP.NETとIPアドレス4との間では通信障害が発生します。

通信先TP1/Serverがマルチホームドホスト形態で，かつ同じTP1/Server上にサービス要求先のSPPが存在しているときは，<nameService>要素のmultiHomedHost属性にtrueを指定することでRPCが行えるようになります。通信先TP1/Serverのシステム共通定義のall_nodeオペランドに，CUP.NETが接続されていないネットワーク上に存在するTP1/Serverが指定されている場合，このTP1/Server上のSPPに対してRPCを行うと通信障害が発生します。なお，通信先TP1/Serverがマルチホームドホスト形態でない場合，multiHomedHost属性の指定に関係なく，RPCを行えます。

(3)　スケジューラダイレクト機能を使用したRPC

スケジューラダイレクト機能を使用すると，RPCの実行時にOpenTP1のネームサービスを使用しないで，直接スケジューラサービスに問い合わせることができます。

スケジューラダイレクト機能を使用したRPCでは，サービスを要求する前にOpenRpcメソッドを呼び出す必要があります。また，CUP.NETの実行の最後にCloseRpcメソッドを呼び出す必要があります。

スケジューラダイレクト機能を使用したRPCの流れと，RPCごとにサービス要求先スケジューラを分散させる場合の定義について説明します。

(a)　スケジューラダイレクト機能を使用したRPCの流れ

スケジューラダイレクト機能を使用したRPCを行う場合は，Client .NET構成定義の<rpc>要素のuse属性にscdを指定し，かつClient .NET構成定義の<scheduleService>要素を指定します。

スケジューラダイレクト機能を使用したサービス要求の流れを次に示します。

図2-5　スケジューラダイレクト機能を使用したサービス要求の流れ

TP1Clientクラスのインスタンスを作成します。

OpenRpcメソッドを呼び出して，CUP.NETのRPC環境を初期化します。

Callメソッドを呼び出して，該当するSPP.NETまたはSPPにサービスを要求します。※

CloseRpcメソッドを呼び出して，RPC環境を解放します。

注※

Callメソッド内部の処理の流れを次に示します。

指定されたscdサーバに対してコネクションを確立します。

scdサーバとのコネクション確立後，サービス要求メッセージを送信してコネクションを切断します。

SPP.NETまたはSPPから応答メッセージ送信用のコネクション確立要求を受信後，コネクションを確立して応答メッセージを受信します。

SPP.NETまたはSPPとの間で確立したコネクションを解放します。

(b)　RPCごとにサービス要求先スケジューラを分散させる場合の定義

スケジューラダイレクト機能を使用したRPCでは，RPCごとにラウンドロビン方式でサービス要求先スケジューラを切り替え，分散させることができます。RPCごとにサービス要求先スケジューラを分散させる場合は，<scheduleService>要素のhostChange属性にtrueを指定してください。

(4)　通信先を指定したRPC

サービス要求を実行するサーバ（通信先のOpenTP1ノード）を明示的に指定してRPCを発行できます。

通信先を指定したRPCでは，サービス要求先のノード（スケジュールサービス）を指定してサービスを要求できます。サービス要求先のノードの状態に関係なく，サービス要求処理は指定したノードで行われます。

通信先を指定したRPCを行う場合は，CallToメソッドを使用します。

なお，このRPCは，リモートAPI機能を使用したRPC，およびクライアントスタブを使用したRPCとの併用はできません。

2.1.5　RPCの機能

＜この項の構成＞

(1)　RPC送受信メッセージの最大長拡張機能

(1)　RPC送受信メッセージの最大長拡張機能

RPC送受信メッセージの最大長拡張機能を使用すると，TP1ClientクラスのCallメソッドおよびCallToメソッドで送受信できるユーザメッセージの最大長を，1～8メガバイトで指定できます。

この機能を使用する場合，<rpc>要素のmaxMessageSize属性を指定してください。ただし，<rpc>要素のmaxMessageSize属性を指定した場合，次の機能は使用しないでください。通信先のTP1/Serverノードでエラーが発生します。

スケジューラダイレクト機能を使用したRPC（<rpc>要素のuse属性にscdを指定）

通信先を指定したRPC（CallToメソッドを使用）

システム共通定義のrpc_max_message_sizeオペランドをサポートしているTP1/Server（バージョン06-02以降）以外のTP1/Serverにサービス要求した場合のCallメソッドの動作については，次の表を参照してください。

表2-2　<rpc>要素のmaxMessageSize属性に2以上を指定した場合のCallメソッドの動作

メソッド | RPCの種類（<rpc>要素のuse属性） | 窓口となるTP1/Serverのバージョン | ノードのバージョン※1
06-02より前の場合 | 06-02以降の場合※2
Call | rap | 06-02より前 | ×※3 | ×※3
06-02以降 | ×※4 | ○
nam | 06-02より前 | ×※4 | ○
06-02以降 | ×※4 | ○

（凡例）

○：サービスを要求できます。

×：サービスを要求できません。

注※1

窓口となるTP1/Serverに指定されているall_nodeオペランドで定義された，SPPを起動しているノードのバージョンです。

注※2

システム共通定義にrpc_max_message_sizeオペランドを指定している場合。

注※3

入力データ長が1メガバイトより大きい場合，ErrMessageTooBigExceptionが発生します。

入力データ長が1メガバイト以下，かつ応答データ格納領域長が1メガバイトより大きい場合，ErrInvalidArgsExceptionが発生します。

注※4

ErrNoSuchServiceGroupExceptionが発生します。

2.1.6　マルチスケジューラ機能を使用したRPC

CUP.NETからスケジュールキューを使うSPP（キュー受信型サーバ）にサービスを要求した場合，要求先SPPがあるノードのスケジューラデーモンが，いったんサービス要求メッセージを受信し，該当するSPPのスケジュールキューに格納します。スケジューラデーモンとは，スケジュールサービスを提供するシステムデーモンのことです。

長大なサービス要求メッセージは，一定の長さに分割してスケジューラデーモンに送信します。スケジューラデーモンは，サービス要求メッセージを組み立ててキュー受信型サーバのスケジュールキューに格納します。スケジューラデーモンは，OpenTP1システムごとに1プロセスです。そのため，分割されたサービス要求メッセージの受信処理が完了するまで，スケジューラデーモンはほかのサービス要求メッセージを受信できません。通信速度が遅い回線を使用して，長大なサービス要求メッセージを送信した場合，ほかのサービス要求のスケジューリングが遅延することがあります。また，システムの大規模化，マシンやネットワークの高性能化などに伴って，効率良くスケジューリングできないことがあります。この場合，従来のスケジューラデーモンとは別に，サービス要求受信専用デーモンを複数プロセス起動し，サービス要求メッセージ受信処理を並行動作させることによって，スケジューリング遅延を回避できます。この機能をマルチスケジューラ機能といいます。以降，従来のスケジューラデーモンをマスタスケジューラデーモン，サービス要求受信専用デーモンをマルチスケジューラデーモンと呼びます。

マルチスケジューラ機能の検討が必要なシステム構成については，マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

＜この項の構成＞

(1)　マルチスケジューラデーモンをランダムに選択する方法

(2)　Client .NET構成定義とサービス要求を送信するスケジューラデーモンの関連

(1)　マルチスケジューラデーモンをランダムに選択する方法

マルチスケジューラ機能を使用することで，複数起動されているマルチスケジューラデーモンの中から，利用できるマルチスケジューラデーモンをランダムに選択してサービス要求を送信できます。マルチスケジューラデーモンをランダムに選択して，スケジューラダイレクト機能，またはネームサービスを使用したRPCを実行できます。

(a)　スケジューラダイレクト機能を使用したRPC

Client .NET構成定義の<rpc>要素のuse属性にscdを指定して，スケジューラダイレクト機能を使用したRPCを行う場合について説明します。

Client .NETでは，窓口となるTP1/Serverのネームサービスへ問い合わせることなく，マルチスケジューラデーモンをランダムに選択できるため，通信回数が削減されます。これによって，ネームサービスの負荷の軽減もできます。

サービス要求を送信するマルチスケジューラデーモンのポート番号は，次に示す範囲の値からランダムに選択されます。

下限値：Client .NET構成定義の<tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定したポート番号の値

上限値：下限値 + Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定したプロセス数 - 1

Client .NET構成定義の<tp1Server>要素のport属性，または<scheduleService>要素のport属性には，マルチスケジューラデーモンのポート番号を指定します。マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合は，マスタスケジューラデーモンのポート番号を指定することもできます。Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性には，TP1/Serverで起動しているスケジューラデーモンのプロセス数を指定します。Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定するプロセス数は，<tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定するポート番号によって，次のように異なります。

表2-3　Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定するプロセス数の違い

<tp1Server>要素のport属性，または<scheduleService>要素のport属性の指定値 | <scheduleService>要素のmultiSchedulerCount属性の指定値
マルチスケジューラデーモンのベースとなるポート番号 | マルチスケジューラデーモンのプロセス数と同じ値，またはそれ以下の値を指定します。
マルチスケジューラデーモンの任意のポート番号 | 「マルチスケジューラデーモンのポート番号の最大 - <tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定したポート番号 + 1」の値，またはそれ以下の値を指定します。
マスタスケジューラデーモンのポート番号 | マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合 | 「マルチスケジューラデーモンのプロセス数 + 1」の値，またはそれ以下の値を指定します。
上記以外 | 1を指定するか，または指定を省略します（マルチスケジューラデーモンは使用できません）。

なお，Client .NET構成定義の<tp1Server>要素で指定した窓口となるTP1/Server間で，スケジュールサービス定義のscdmultiで指定した値を統一する必要があります。

(b)　ネームサービスを使用したRPC

マルチスケジューラ機能を使用して，ネームサービスを使用したRPCを行う場合について説明します。サービス情報を一時的に格納する領域に，該当するサービス情報がないときはネームサービスにサービス情報を問い合わせます。サービス情報を基にマルチスケジューラデーモンをランダムに選択してサービス要求を送信します。

(2)　Client .NET構成定義とサービス要求を送信するスケジューラデーモンの関連

マルチスケジューラ機能を使用した場合，サービス要求を送信するスケジューラデーモンはClient .NET構成定義の指定によって異なります。

スケジューラダイレクト機能を使用したRPCの場合の，Client .NET構成定義の指定とスケジューラデーモンの関連を次の表に示します。

表2-4　Client .NET構成定義の指定とスケジューラデーモンの関連（スケジューラダイレクト機能を使用したRPC）

Client .NET構成定義の指定 | サービス要求を送信するスケジューラデーモン
<rpc>要素のuse属性 | <rpc>要素のuseMultiScheduler属性 | <scheduleService>要素のmultiSchedulerCount属性
scd | true | 2以上の値 | ランダムに選択したスケジューラデーモン※
1，または指定を省略する | Client .NET構成定義の<tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定したポート番号で起動されているスケジューラデーモン
false | 無効 | Client .NET構成定義の<tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定したポート番号で起動されているスケジューラデーモン

注※

スケジューラデーモンのポート番号は，次に示す範囲の値から選択されます。

下限値：Client .NET構成定義の<tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定したポート番号の値

上限値：下限値 + Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定したプロセス数 - 1

ネームサービスを使用したRPCの場合の，Client .NET構成定義の指定とスケジューラデーモンの関連を次の表に示します。

表2-5　Client .NET構成定義の指定とスケジューラデーモンの関連（ネームサービスを使用したRPC）

Client .NET構成定義の指定 | サービス要求を送信するスケジューラデーモン
<rpc>要素のuse属性 | <rpc>要素のuseMultiScheduler属性 | <scheduleService>要素のmultiSchedulerCount属性
nam | true | 無効 | サービス情報を基にランダムに選択したスケジューラデーモン※
false | マスタスケジューラデーモン※

注※

ネームサービスへの問い合わせが発生します。

2.2　常設コネクション

Client .NETでは，CUP.NETとTP1/Serverのrapリスナー，rapサーバとの間のコネクションを確立したままでメッセージを送受信できます。このような論理的な通信路を常設コネクションといいます。

リモートAPI機能を使用したRPCを実行する場合は，必ず常設コネクションを確立してください。

常設コネクションを確立すると，コネクション確立・解放のための制御用パケットを減らすことができ，通信の効率が向上します。

また，常設コネクションを使用してDCCM3論理端末と通信する場合，端末識別情報をDCCM3論理端末に通知し，CUP.NETに割り当てられるDCCM3の論理端末を固定することができます。

＜この節の構成＞

2.2.1　常設コネクションの確立・解放

2.2.2　常設コネクションを使用する場合に関連する定義

2.2.3　DCCM3論理端末への端末識別情報の通知

2.2.4　常設コネクションを使用するときの注意事項

2.2.1　常設コネクションの確立・解放

常設コネクションを確立するためには，OpenConnectionメソッドを呼び出します。接続要求先のrapサーバの位置は，OpenConnectionメソッドの引数で指定するか，構成ファイルの構成定義で指定します。ただし，CUP.NETとrapリスナー，rapサーバとの間に仮想アドレスを持つネットワーク機器がある場合は，そのアドレスを指定してください。

常設コネクションは，TP1Clientクラスの1インスタンスに対して1コネクションだけ確立できます。

常設コネクションの管理方法には，非オートコネクトモードとオートコネクトモードの二つのモードがあります。どちらのモードを使用するかは，Client .NET構成定義の<rapService>要素のautoConnect属性で指定するか，またはSetRpcExtendメソッドで指定してください。

＜この項の構成＞

(1)　非オートコネクトモード

(2)　オートコネクトモード

(1)　非オートコネクトモード

非オートコネクトモードは，CUP.NETで明示的にOpenConnectionメソッドを呼び出してTP1/Serverのrapリスナー，rapサーバとの常設コネクションを確立します。OpenConnectionメソッドを呼び出さないでサービスを要求した場合は，例外が発生します。常設コネクションを解放するには，CloseConnectionメソッドを呼び出します。CloseConnectionメソッドを呼び出して常設コネクションを解放したあとは，OpenConnectionメソッドで再び常設コネクションを確立するまでサービスは要求できません。なお，CloseConnectionメソッドが失敗した場合でも常設コネクションは解放されます。また，CloseConnectionメソッドを呼び出さないままCloseRpcメソッドを呼び出した場合には，自動的に常設コネクションは解放されます。

非オートコネクトモードを使用する場合のコーディング例を次に示します。

非オートコネクトモードのコーディング例1

public class Sample1 {
 public static void Main(string args[]) {
            ：
   TP1Client clt = new TP1Client();
            ：
   clt.OpenConnection(...);
            ：
   clt.Call(...);
            ：
   clt.CloseConnection(...);
 }
}

非オートコネクトモードのコーディング例2

public class Sample2 {
 public static void Main(string args[]) {
            ：
   TP1Client clt = new TP1Client();
            ：
   clt.OpenRpc();
            ：
   clt.OpenConnection(...);
            ：
   clt.Call(...);
            ：
   clt.CloseConnection(...);
            ：
   clt.CloseRpc();
 }
}

(2)　オートコネクトモード

オートコネクトモードは，Client .NETで常設コネクションを管理します。

サービスを要求したときに常設コネクションが確立されていなかった場合は，自動的にrapリスナー，rapサーバとの常設コネクションを確立します。このため，OpenConnectionメソッドを呼び出すことはできません。呼び出した場合は例外が発生します。常設コネクションを解放するにはCloseRpcメソッドを呼び出します。ただし，Client .NETで管理している常設コネクションを強制的に解放したい場合は，CloseConnectionメソッドを呼び出します。

オートコネクトモードを使用する場合のコーディング例を次に示します。

オートコネクトモードのコーディング例1

public class Sample1 {
 public static void Main(string args[]) {
            ：
   TP1Client clt = new TP1Client();
            ：
   clt.OpenRpc(...);
            ：
   clt.Call(...);
            ：
   clt.CloseRpc();
 }
}

オートコネクトモードのコーディング例2

public class Sample2 {
 public static void Main(string args[]) {
            ：
   TP1Client clt = new TP1Client();
            ：
   clt.OpenRpc(...);
            ：
   clt.Call(...);
            ：
   clt.CloseConnection();
            ：
   clt.Call(...);
            ：
   clt.CloseRpc();
 }
}

2.2.2　常設コネクションを使用する場合に関連する定義

常設コネクションを使用する場合，必要に応じて次の定義を設定してください。

Client .NET構成定義
<rpc>要素のuse属性
<rapService>要素のport属性，autoConnect属性，およびinquireTime属性
<tp1Server>要素のhost属性

rapリスナーサービス定義
rapリスナーサービス定義の詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

2.2.3　DCCM3論理端末への端末識別情報の通知

常設コネクションを使用してDCCM3論理端末と通信する場合，端末識別情報をDCCM3論理端末に通知し，CUP.NETに割り当てられるDCCM3の論理端末を固定することができます。

＜この項の構成＞

(1)　DCCM3論理端末でのメッセージ送受信方法

(2)　端末識別情報の通知

(3)　DCCM3論理端末に端末識別情報を通知する場合の注意事項

(1)　DCCM3論理端末でのメッセージ送受信方法

DCCM3論理端末では，通信相手となるClient .NETをIPアドレスとDCCM3論理端末のポート番号で区別する論理端末として定義し，論理端末ごとにメッセージの送受信を行っています。

したがって，複数のCUP.NETを同一マシンから起動した場合，どのCUP.NETからの要求でも，DCCM3論理端末から見るとIPアドレスが同じになってしまいます。複数のCUP.NETから同じDCCM3論理端末のポートにサービスを要求すると，DCCM3の定義では区別が付きません。そのため，該当するDCCM3の論理端末が複数定義されていた場合，DCCM3のどの論理端末にCUP.NETが割り当てられるのかが不定になってしまいます。サービス要求を受け付けるDCCM3の論理端末が異なると，DCCM3側のサーバ処理の順番が保証されなくなるため，業務によっては問題となることがあります。

(2)　端末識別情報の通知

CUP.NETがDCCM3論理端末と常設コネクションを確立するときに，端末識別情報をDCCM3論理端末に通知することで，CUP.NETに割り当てられるDCCM3の論理端末を固定することができます。これを端末識別情報設定機能といいます。この機能を使用することで，CUP.NETを常に同じDCCM3の論理端末に割り当てることができます。なお，DCCM3側では，この機能を端末固定割り当て機能といいます。

端末識別情報設定機能を使用していない場合と使用している場合のCUP.NETとDCCM3論理端末の関係を，次の図に示します。

図2-6　CUP.NETとDCCM3論理端末の関係（端末識別情報設定機能を使用していない場合）

図2-7　CUP.NETとDCCM3論理端末の関係（端末識別情報設定機能を使用している場合）

端末識別情報設定機能は，次のどちらかの方法で使用できます。

方法1

Client .NET構成定義の<tp1Server>要素のhost属性にDCCM3論理端末のホスト名を指定します。

Client .NET構成定義の<tp1Server>要素のport属性または<rapService>要素のport属性にDCCM3論理端末のポート番号を指定します。

SetConnectInformationメソッドに端末識別情報を設定し，メソッドを呼び出します。

次のどちらかの方法でDCCM3論理端末との常設コネクションを確立します。
・ OpenConnectionメソッドを呼び出します。引数有りのOpenConnectionメソッドの場合，引数hostにDCCM3論理端末のホスト名，引数portにDCCM3論理端末のポート番号を指定します。
・ Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定し，Callメソッドを呼び出します。

方法2

Client .NET構成定義の<tp1Server>要素のhost属性にDCCM3論理端末のホスト名を指定します。

Client .NET構成定義の<tp1Server>要素のport属性または<rapService>要素のport属性にDCCM3論理端末のポート番号を指定します。

Client .NET構成定義の<rapService>要素のconnectInformation属性に端末識別情報を設定します。

次のどちらかの方法でDCCM3論理端末との常設コネクションを確立します。
・ OpenConnectionメソッドを呼び出します。引数有りのOpenConnectionメソッドの場合，引数hostにDCCM3論理端末のホスト名，引数portにDCCM3論理端末のポート番号を指定します。
・ Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定し，Callメソッドを呼び出します。

注意

Client .NET構成定義の<rapService>要素のconnectInformation属性に端末識別情報を設定して，SetConnectInformationメソッドに端末識別情報を設定した場合は，SetConnectInformationメソッドの設定が有効になります。<rapService>要素のconnectInformation属性に設定した値は，SetConnectInformationメソッドを呼び出したあと，再びOpenRpcメソッドを呼び出すまで無視されます。

(3)　DCCM3論理端末に端末識別情報を通知する場合の注意事項

端末固定割り当て機能を使用したDCCM3の論理端末名称と，Client .NETで定義した端末識別情報とが一致していない場合に，次のメソッドを呼び出したときはErrNetDownAtClientException例外を返します。

OpenConnectionメソッド

Callメソッド（ただし，Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定した場合）

端末固定割り当て機能を使用したDCCM3の論理端末に対して，Client .NETで端末識別情報を設定しないで次のメソッドを呼び出した場合，ErrNetDownAtClientException例外を返します。

OpenConnectionメソッド

Callメソッド（ただし，Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定した場合）

端末固定割り当て機能を使用していないDCCM3の論理端末に対して，Client .NETから端末識別情報を設定して常設コネクションの確立を要求した場合，DCCM3はClient .NETが設定した端末識別情報の設定内容を無視します。

Client .NETから端末識別情報を設定して，TP1/Serverのrapサーバと常設コネクションを確立する場合，rapサーバはClient .NETが設定した端末識別情報の設定内容を無視します。また，Client .NETがrapサーバを介してDCCM3へRPCを発行する場合，Client .NETで設定した端末識別情報はDCCM3に伝達されません。

端末識別情報は，リモートAPI機能を使用したRPCの場合だけ有効となります。ネームサービスを使用したRPC，またはスケジューラダイレクト機能を使用したRPCの場合は，端末識別情報を設定しても無視されます。

2.2.4　常設コネクションを使用するときの注意事項

トランザクション内からは常設コネクションを確立できません。常設コネクションを確立したあと，トランザクションを生成してください。

2.3　トランザクション制御機能

Client .NETからOpenTP1のトランザクションを制御できます。

トランザクション制御機能は，リモートAPI機能を使用している場合にだけ使用できます。

＜この節の構成＞

2.3.1　トランザクション制御機能の概要

2.3.2　トランザクション制御機能を使用する場合の設定

2.3.3　トランザクションの開始と同期点取得

2.3.4　同期点取得

2.3.5　障害発生時のトランザクションの同期点を検証する方法

2.3.6　TP1/Server側での定義に対する注意事項

2.3.1　トランザクション制御機能の概要

トランザクション制御機能を使用すると，アプリケーションでトランザクションを管理できます。そのため，処理が失敗した場合でも，データが失われたり，不整合が発生したりすることを避けられます。

＜この項の構成＞

(1)　トランザクションのコミットとロールバック

(2)　グローバルトランザクション

(3)　ローカルトランザクション

(4)　連鎖モードと非連鎖モード

(5)　RPCの形態と同期点の関係

(1)　トランザクションのコミットとロールバック

トランザクションとは，関連する複数の処理を一つのまとまった処理として扱うための論理的な単位です。一つのトランザクション内で実行した処理は，すべてが有効になるか，すべてが無効になるかのどちらかです。

トランザクションを有効にすることを，トランザクションのコミットといいます。トランザクションがコミットして初めてトランザクション処理の結果が有効になります。

トランザクションをコミットするかどうか最終的に決定するトランザクション処理の区切りを，同期点といいます。

トランザクションを無効にして，処理対象としていた資源をトランザクション開始直前の状態に戻すことを，トランザクションのロールバックといいます。トランザクションをコミットできなかった場合や，処理の不整合を検出した場合などは，これまでの処理をロールバックで取り消して，データの整合性を保ちます。

(2)　グローバルトランザクション

UAPでRPCを実行すると，トランザクションは複数のUAPプロセスにわたります。

複数のプロセスで構成されるトランザクションを，グローバルトランザクションといいます。グローバルトランザクションを構成する各プロセスを，トランザクションブランチといいます。特に，トランザクションの開始を宣言したプロセスをルートトランザクションブランチといいます。

(3)　ローカルトランザクション

OpenTP1が管理するトランザクションです。Client .NETを使用するCUP.NET上でのリソースマネジャへのアクセスをトランザクションに含めることはできません。

CUP.NETのプロセスはルートトランザクションブランチになることはできません。

TP1ClientクラスのBeginメソッドによってトランザクションを開始した場合，rapサーバのプロセスがルートトランザクションブランチになります。

(4)　連鎖モードと非連鎖モード

トランザクション処理の同期点取得には，一つのトランザクションの終了後，同期点を取得して次のトランザクションを続けて起動する連鎖モードのコミットと，トランザクションの終了で同期点を取得したあと，新たなトランザクションを起動しない非連鎖モードのコミットがあります。

また同様に，連鎖モードのロールバックと，非連鎖モードのロールバックがあります。連鎖モードのロールバックでは，ロールバック処理後もUAPプロセスはグローバルトランザクションの範囲内にありますが，非連鎖モードのロールバックでは，UAPプロセスはグローバルトランザクションの範囲外となります。

(5)　RPCの形態と同期点の関係

RPCの形態と同期点の関係を次に示します。

(a)　同期応答型RPCと同期点の関係

同期応答型RPCで要求を行うトランザクション処理の場合，クライアントUAPに処理結果が戻って，同期点処理を終えた時点で，トランザクションの終了となります。

(b)　非応答型RPCと同期点の関係

非応答型RPCで要求を行うトランザクション処理の場合，クライアントUAPと，サーバUAPの処理終了で同期を取ります。

2.3.2　トランザクション制御機能を使用する場合の設定

トランザクションを制御する場合，Client .NET構成定義およびサーバ側のTP1/Server Baseの各サービス定義を次のように指定しておく必要があります。

＜この項の構成＞

(1)　Client .NET構成定義

(2)　TP1/Server Baseのユーザサービス定義

(1)　Client .NET構成定義

オートコネクトモードでリモートAPI機能を使用するように指定します。

【指定例】

…
<tp1Server host=""/>
<rpc use="rap" watchTime="0"/>
<rapService port="10020" autoConnect="true"/>
…

(2)　TP1/Server Baseのユーザサービス定義

サーバ側のTP1/Server Baseのトランザクションとして実行するSPPは，ユーザサービス定義のatomic_updateオペランドにYを指定します。

2.3.3　トランザクションの開始と同期点取得

CUP.NETからTP1ClientクラスのBeginメソッドを呼び出して，トランザクションを開始します。

Beginメソッドを呼び出してから同期点取得（コミット）までが，グローバルトランザクションの範囲となります。Beginメソッドを呼び出したあと，そのグローバルトランザクションの中で新たなBeginメソッドは呼び出せません。

CUP.NETからSPP.NETまたはSPPに対してRPC要求を実行すると，CUP.NETはrapサーバでルートトランザクションブランチを生成し，呼び出したSPP.NETまたはSPPはトランザクションブランチとして実行されます。

なお，Beginメソッドの呼び出しから，RPC要求，同期点取得の間は，同一のTP1Clientオブジェクトである必要があります。

トランザクションとRPCの関係を次の図に示します。

図2-8　トランザクションとRPCの関係

TP1Clientクラスのインスタンスを生成します。

TP1ClientクラスのBeginメソッドを呼び出してトランザクションを開始します。
rapサーバは，dc_trn_begin関数を発行し，rapサーバのプロセスからグローバルトランザクションを開始します。
TP1Clientのインスタンスはrapサーバのプロセスと1対1で結び付けられます。

TP1ClientクラスのCallメソッドを呼び出してSPP.NETまたはSPPにサービスを要求します。コミットまたはロールバックが発生するまで，rapサーバとSPP.NETまたはSPPは関連づけられます。

TP1ClientクラスのCommitメソッドを呼び出して非連鎖モードのコミットをします。
この時点でTP1Clientクラスのインスタンス，rapサーバのプロセス，および要求先のSPP.NETまたはSPPとの関連づけはなくなります。

2.3.4　同期点取得

＜この項の構成＞

(1)　コミット

(2)　ロールバック

(3)　トランザクションの処理時間について

(1)　コミット

トランザクションが正常終了したときの同期点取得（コミット）は，CUP.NETからTP1ClientクラスのCommitメソッドを呼び出して要求します。

グローバルトランザクションは，すべてのトランザクションブランチが正常に終了したことで正常終了となります。

(a)　連鎖，非連鎖モードでのコミット

トランザクション処理の同期点取得には，次の2種類があります。

連鎖モードのコミット
連鎖モードのコミットは，TP1ClientクラスのCommitChainedメソッドを呼び出して要求します。

非連鎖モードのコミット
非連鎖モードのコミットは，TP1ClientクラスのCommitメソッドを呼び出して要求します。

(b)　コミット要求メソッドを呼び出さない場合の処理

次の場合，トランザクションはロールバックされます。

TP1ClientクラスのCommitメソッドを呼び出さないでCUP.NETが終了したとき

TP1ClientクラスのCommitメソッドを呼び出す前にCUP.NETが異常終了したとき

(2)　ロールバック

(a)　TP1/Serverの処理でのエラーの場合

トランザクションでエラーが発生すると，TP1ClientクラスのCommitメソッドで例外が発生します。そのトランザクションは部分回復対象としてロールバックされます。グローバルトランザクション内のどれか一つのトランザクションブランチでエラーが発生した場合でも，グローバルトランザクション全体がロールバックの対象となります。

このときTP1/Serverは，トランザクションブランチをロールバック対象と見なして，部分回復処理をします。

(b)　ロールバック要求メソッドを呼び出す場合

トランザクションをCUP.NETの判断でロールバックしたいときは，CUP.NETからロールバック要求のメソッドを呼び出して行います。

トランザクション処理のロールバックには，次の2種類があります。

連鎖モードのロールバック
連鎖モードのロールバックは，TP1ClientクラスのRollbackChainedメソッドを呼び出して要求します。RollbackChainedメソッドを呼び出してロールバックすると，このメソッドを呼び出したCUP.NETのプロセスは，ロールバック処理後も，グローバルトランザクションの範囲内にあります。

非連鎖モードのロールバック
非連鎖モードのロールバックは，TP1ClientクラスのRollbackメソッドを呼び出して要求します。Rollbackメソッドを呼び出してロールバックすると，このメソッドを呼び出したCUP.NETのプロセスは，ロールバック処理後，グローバルトランザクションの範囲外となります。

(3)　トランザクションの処理時間について

トランザクションに関する次に示す時間をClient.NET構成定義で指定できます。詳細については，「3.　構成定義」の「transaction」を参照してください。

トランザクション同期点処理時の最大通信待ち時間

トランザクションブランチ最大実行可能時間

2.3.5　障害発生時のトランザクションの同期点を検証する方法

CUP.NETから開始したトランザクションで障害が発生した場合，そのトランザクションブランチがコミットしたかどうかを検証できます。

この場合，トランザクション開始後に，必ずTP1ClientクラスのGetTransactionIDメソッドを呼び出して，トランザクショングローバル識別子，およびトランザクションブランチ識別子を取得しておく必要があります。

Client .NETで取得しておいたトランザクショングローバル識別子と，サーバ側のメッセージログファイルに出力されるトランザクションの結果を突き合わせることによって，CUP.NETから開始したトランザクションがコミットしたかどうか検証できます。

2.3.6　TP1/Server側での定義に対する注意事項

Client .NETとTP1/Server間でトランザクション連携をする場合で，かつset rpc_extend_functionオペランドを指定する場合は，次の注意が必要です。

ユーザサービスデフォルト定義のset rpc_extend_functionオペランドに，00000002ビットがONになるような設定をしないでください。ユーザサービスデフォルト定義のset rpc_extend_functionオペランドに，00000002ビットがONになるような設定をした場合，CUP.NET側が管理しているトランザクション中のステータスとOpenTP1側が保持しているトランザクション中のステータスが不一致になるときがあります。set rpc_extend_functionオペランドの00000002ビットがONになっている場合の動作は保証できません。

ユーザサービスデフォルト定義のset rpc_extend_functionオペランドの00000002ビットがONになっている場合は，rapリスナーサービス定義のset rpc_extend_functionオペランドで00000002ビットがOFFになるように定義し，rapdfgenコマンドでrapリスナー用ユーザサービス定義，およびrapサーバ用ユーザサービス定義を再作成してください。
また，再作成後rapリスナー，およびrapサーバを再起動してください。

2.4　TCP/IP通信機能

Client .NETでは，メッセージ送受信機能を使用することで，TCP/IPプロトコルによってOpenTP1のMHPやOpenTP1以外のシステムと通信できます。

Client .NETで使用できる通信プロトコルは，TCP/IPだけです。そのため，Client .NETでのメッセージ送受信機能を，TCP/IP通信機能と呼びます。

TCP/IP通信機能による通信の例を次に示します。

図2-9　TCP/IP通信機能による通信の例

注※

TP1/NET/TCP/IP，TP1/Messagingなど，メッセージ制御機能を提供するOpenTP1システムのプログラムを組み込む必要があります。

＜この節の構成＞

2.4.1　Client .NETでのTCP/IP通信機能

2.4.2　通信形態

2.4.3　受信メッセージの組み立て機能

2.4.4　TCP/IP通信機能を使用するときの注意事項

2.4.1　Client .NETでのTCP/IP通信機能

Client .NETは，TCP/IPでの通信機能を提供します。通信相手には，MHPまたは任意のソケットアプリケーションが使用できます。

CUP.NETがクライアントとなる場合は，CUP.NET側から定義や引数で指定した通信相手に対してコネクションを確立して通信をします。CUP.NETがサーバとなる場合は，定義で指定したポートで通信相手がコネクションを確立したあと通信をします。コネクション確立後は，引数に指定された領域に対してデータの送受信をします。

2.4.2　通信形態

TCP/IP通信機能を使用したメッセージの送受信には，次の3種類があります。

CUP.NETからMHPへのメッセージの一方送信

MHPからCUP.NETへのメッセージの一方受信

MHPとCUP.NETとの間のメッセージの送受信

＜この項の構成＞

(1)　メッセージの一方送信

(2)　メッセージの一方受信

(3)　メッセージの送受信

(1)　メッセージの一方送信

CUP.NETからMHPに対して一方的にメッセージを送信できます。これをメッセージの一方送信といいます。

CUP.NETからSendメソッドを呼び出して，MHPへメッセージを送信します。

メッセージを一方送信するには，あらかじめ，Client .NET構成定義で次の指定をしておく必要があります。

<tcpip>要素のsendHost属性にMHPが存在するノードのホスト名を指定

<tcpip>要素のsendPort属性にMHPのポート番号（MCF通信構成定義の定義コマンドmcftalccnのportnoで指定したポート番号）を指定

<tcpip>要素のtype属性にsendを指定

メッセージの一方送信を次の図に示します。

図2-10　メッセージの一方送信（CUP.NET）

MHPが起動されたあと，CUP.NETからSendメソッドを呼び出します。

Sendメソッドの呼び出し時に，MHPからコネクションが解放されていたときは，CUP.NETにErrNetDownExceptionが返されます。

再びメッセージを一方送信するには，Sendメソッドを呼び出します。

(2)　メッセージの一方受信

MHPからCUP.NETに対して一方的に送信したメッセージをCUP.NETで受信できます。これをメッセージの一方受信といいます。

CUP.NETは，Receiveメソッドを呼び出して，MHPからのメッセージをTCP/IPプロトコルを使用して受信します。

メッセージを一方受信するには，あらかじめ，Client .NET構成定義で次の指定をしておく必要があります。

<tcpip>要素のrecvPort属性にCUP.NETの受信用ポート番号（MCF通信構成定義の定義コマンドmcftalccnのoportnoオペランドで指定したポート番号）を指定

<tcpip>要素のtype属性にrecvを指定

メッセージの一方受信を次の図に示します。

図2-11　メッセージの一方受信（CUP.NET）

MHPがコネクションの確立要求を再試行している間に，CUP.NETがReceiveメソッドを呼び出します。再試行中にコネクションを確立できなかった場合，mcftactcnコマンドを入力してコネクションを確立します。

MHPからコネクションが解放された場合，CUP.NETにErrConnfreeExceptionが返されます。

再びメッセージを一方受信するには，Receiveメソッドを呼び出します。この場合，mcftactcnコマンドを入力してコネクションを確立してください。

(3)　メッセージの送受信

CUP.NETとMHPとの間で，メッセージを送受信できます。

CUP.NETでSendメソッドを呼び出してMHPへメッセージを送信し，CUP.NETでReceiveメソッドを呼び出して，MHPからのメッセージを受信します。

メッセージを送受信するには，あらかじめ，Client .NET構成定義で次の指定をしておく必要があります。

MHPがサーバ型の場合

<tcpip>要素のsendHost属性にMHPが存在するノードのホスト名を指定

<tcpip>要素のsendPort属性にMHPのポート番号（MCF通信構成定義の定義コマンドmcftalccnのportnoで指定したポート番号）を指定

<tcpip>要素のtype属性にsendrecvを指定

MHPがクライアント型の場合

<tcpip>要素のrecvPort属性にCUP.NETのポート番号（MCF通信構成定義の定義コマンドmcftalccnのoportnoオペランドで指定したポート番号）を指定

<tcpip>要素のtype属性にsendrecvを指定

メッセージの一方受信時および一方送信時は，それぞれ別のコネクションを使用して，メッセージを受信および送信しますが，メッセージ送受信時は，同じコネクションを使用してメッセージを送受信します。

メッセージの送受信を次の図に示します。

図2-12　メッセージの送受信（CUP.NET）

2.4.3　受信メッセージの組み立て機能

Client .NETの受信メッセージの組み立て機能を使用すると，メッセージの送信時に，メッセージの先頭4バイトにメッセージ長エリアを付与します。また，メッセージの受信時には，メッセージの先頭4バイトをメッセージ長エリアとして扱います。このため，TP1/NET/TCP/IPの受信メッセージの組み立て機能を使用して送受信されるメッセージのメッセージ長エリアを，CUP.NET側で意識する必要がなくなります。

＜この項の構成＞

(1)　メッセージ送信時の処理

(2)　メッセージ受信時の処理

(1)　メッセージ送信時の処理

CUP.NETからTP1ClientクラスのSendAssembledMessageメソッドを呼び出すと，Client .NETがメッセージの先頭4バイトにメッセージ長エリアを付与して相手システムに送信します。Client .NETは，メッセージ長をネットワークバイトオーダーで設定します。

TP1ClientクラスのSendAssembledMessageメソッドを使用するためには，Client .NET構成定義で<tcpip>要素のtype属性にsendまたはsendrecvを指定しておく必要があります。

メッセージ送信時の処理を次の図に示します。

図2-13　メッセージ送信時の処理

（凡例）

LL：メッセージ長

(2)　メッセージ受信時の処理

CUP.NETからTP1ClientクラスのReceiveAssembledMessageメソッドを呼び出してメッセージの受信要求をすると，受信したメッセージの先頭4バイトをメッセージ長エリアとして扱います。Client .NETは，メッセージ長エリアを基にメッセージを組み立て，メッセージ長エリアを取り除いた状態でCUP.NETに通知します。Client .NETでは，メッセージ長エリアに設定された値をネットワークバイトオーダーでチェックするため，相手システムでもメッセージ長をネットワークバイトオーダーで設定してください。

TP1ClientクラスのReceiveAssembledMessageメソッドを使用するためには，Client .NET構成定義で<tcpip>要素のtype属性にsendまたはsendrecvを指定しておく必要があります。

メッセージ受信時の処理を次の図に示します。

図2-14　メッセージ受信時の処理

（凡例）

LL：メッセージ長

2.4.4　TCP/IP通信機能を使用するときの注意事項

＜この項の構成＞

(1)　メッセージ送信時の注意事項

(2)　メッセージ受信時の注意事項

(3)　その他の注意事項

(1)　メッセージ送信時の注意事項

(a)　障害発生時のメッセージの消失

次に示す障害が発生すると，Client .NETおよび相手システムでは，メッセージが消失したことを検出できません。したがって，ユーザはあらかじめメッセージ中に通番を付けるなどして，障害に備えてください。

ソケットのバッファにClient .NETが送信したメッセージが書き込まれて送信が正常終了した直後に，通信障害が発生したり，コネクションが解放されたりした場合

Client .NETが送信したメッセージが相手システムの受信バッファに書き込まれる直前に通信障害が発生したり，コネクションが解放されたりした場合

(b)　コネクションの確立

Client .NETがクライアントとなり，相手システムにメッセージを送信します。そのため，Client .NETから相手システムに対して，コネクションを確立します。相手システムがTP1/NET/TCP/IPを使用している場合，コネクションはサーバ型となります。

(2)　メッセージ受信時の注意事項

(a)　障害発生時のメッセージの消失

次に示す障害が発生すると，Client .NETおよび相手システムでは，メッセージが消失したことを検出できません。したがって，ユーザはあらかじめメッセージ中に通番を付けるなどして，障害に備えてください。

ソケットのバッファに相手システムが送信したメッセージが書き込まれて送信が正常終了した直後に，通信障害が発生したり，コネクションが解放されたりした場合

相手システムが送信したメッセージがClient .NET側の受信バッファに書き込まれる直前に，通信障害が発生したり，コネクションが解放されたりした場合

(b)　受信するメッセージの確認

任意の相手システムからのメッセージを受信できます。そのため，コネクションの確立要求を受けると，その要求を無条件に受諾してメッセージを受信します。ユーザは，メッセージ識別子が含まれたヘッダをメッセージ中に含めるなどして，CUP.NETが受け取るメッセージかどうかを確認してください。

(c)　メッセージ長

TCP/IPプロトコルを使用してメッセージを受信します。

TCP/IPプロトコルでは，一つのメッセージを複数のパケットに分割したり，複数のメッセージを一つのパケットに詰め込んだりします。そのため，ユーザが指定するメッセージ長以外に，受信したメッセージの切れ目を判断できません。ユーザはメッセージ長を含めた固定長のヘッダを最初に受信し，ヘッダに含まれているメッセージ長を指定して，実際のメッセージを受信してください。

指定したメッセージ長より短いメッセージを受信した場合，Client .NETは，メッセージが分割されているものと見なします。そのため，指定した長さ分のメッセージを受信するまで，CUP.NETに制御を戻しません。

タイムアウトやエラーの発生によって，指定した長さ分のメッセージを受信していない場合でも，その時点までのメッセージを受信できます。

(d)　コネクションの確立

Client .NETがサーバとなり，相手システムからのメッセージを受信します。そのため，相手システムからClient .NETに対して，コネクションを確立します。相手システムがTP1/NET/TCP/IPを使用している場合，コネクションはクライアント型になります。

(3)　その他の注意事項

TP1/NET/TCP/IPの受信メッセージの組み立て機能を使用すると，MHPが送信したデータの先頭に4バイトのメッセージ長が付与されます。また，MHPにデータを送信する場合は，先頭4バイトにメッセージ長を設定する必要があります。メッセージ長は，ネットワークバイトオーダーにしてください。なお，このメッセージ長は，MHPが受信するときには削除されます。CUP.NETでは，送信時および受信時に，メッセージ長を意識する必要があるので注意してください。TP1/NET/TCP/IPの受信メッセージの組み立て機能を使用する場合は，TP1/NET/TCP/IPのプロトコル固有定義で次のように指定します。

mcftalccn -u masm=yes

TP1/NET/TCP/IPのプロトコル固有定義の詳細については，マニュアル「OpenTP1 プロトコル TP1/NET/TCP/IP編」を参照してください。

2.5　サーバからの一方通知受信機能

サーバからクライアントへのメッセージの一方通知受信機能について説明します。

＜この節の構成＞

2.5.1　一方通知受信機能の処理の流れ

2.5.2　一方通知連続受信機能の処理の流れ

2.5.3　一方通知連続受信機能を使用するときの注意事項

2.5.4　一方通知受信待ち状態の解除

2.5.1　一方通知受信機能の処理の流れ

一方通知受信機能を使用すると，オンライン開始の合図をクライアント側に一斉配布する，従来メインフレームのOLTPでの端末一斉起動と同様な運用ができるようになります。

一方通知受信機能を使用する場合，AcceptNotificationメソッドを実行します。これによって，クライアント側ではサーバの状態（起動・未起動）に関係なくサーバ側からの送信メッセージをメソッドに指定した時間中待ち続けます。サーバ側で起動時にメッセージを送信することによって，クライアント側はサーバ起動を検出し，これを契機にユーザ業務（CUP.NET）を開始できます。

一方通知受信機能の処理の流れを次の図に示します。

図2-15　一方通知受信機能の処理の流れ

2.5.2　一方通知連続受信機能の処理の流れ

一方通知連続受信機能を使用すると，OpenNotificationメソッドを実行してからCloseNotificationメソッドを実行するまでの間は，サーバ側からの一方通知メッセージを連続して受信できます。この機能を利用すると，サーバ側から送信される一方通知メッセージを受信できる状態になっていない場合，サーバ側から一方通知メッセージを送信しても，クライアント側はエラーリターンしません。その場合は，クライアント側が一方通知メッセージを受信するAcceptNotificationChainedメソッドを実行した時点で，待ち受けキューからメッセージを取り出すことができます。

一方通知連続受信機能の処理の流れを次の図に示します。

図2-16　一方通知連続受信機能の処理の流れ

一方通知メッセージが送られてくるのを待ちます。

TP1/Serverが起動して，クライアント業務が実行できる状態になったことを，一方通知メッセージを送信してCUP.NETに通知します。

TCP/IPの待ち受けキューに一方通知メッセージが届いたため，一方通知メッセージを取り出して，CUP.NETに制御を戻します。

AcceptNotificationChainedメソッドの発行時に，TCP/IPの待ち受けキューにサーバからの一方通知メッセージが届いたため，一方通知メッセージを取り出して，CUP.NETに制御を戻します。

2.5.3　一方通知連続受信機能を使用するときの注意事項

TCP/IPの待ち受けキューに保留できるメッセージの数には上限があります。上限値は5です。上限値を超えるメッセージが到着した場合，サーバ側で実行したdc_rpc_cltsend関数は，DCRPCER_SERVICE_NOT_UPでエラーリターンします。

2.5.4　一方通知受信待ち状態の解除

AcceptNotificationメソッド，またはAcceptNotificationChainedメソッドを発行し，サーバからの一方通知受信待ち状態となったCUP.NETが，別のCUP.NETからキャンセル通知を受信した場合，受信待ち状態を解除します。キャンセル通知は，CancelNotificationメソッドを発行することで送信できます。

一方通知受信待ち状態を解除する処理の流れを次の図に示します。

図2-17　一方通知受信待ち状態を解除する処理の流れ

2.6　動的定義変更機能

動的定義変更機能を使用すると，Client .NETの構成ファイルで指定した構成定義をCUP.NETの実行中に変更できます。動的定義変更用のSetXxxxメソッド（Xxxxは変更する構成定義項目に対応した名称）を呼び出して，構成定義を変更します。なお，動的定義変更用のメソッドを呼び出して変更した構成定義は，CUP.NETが終了するまで（CloseRpcメソッドが呼び出されるまで）の間は，同じ動的定義変更用のメソッドを呼び出して構成定義を変更しないかぎり，変更されません。

Client .NET構成定義と，動的定義変更機能で設定した構成定義のどちらが有効になるかは，メソッドの呼び出し順序で決定します。

OpenRpcメソッドを呼び出したあとに動的定義変更用のメソッドを呼び出した場合
動的定義変更用のメソッドで変更した構成定義が有効になります。

動的定義変更用のメソッドを呼び出したあとにOpenRpcメソッドを呼び出した場合
Client .NET構成定義が有効になります。

2.7　ノード間負荷バランス機能

OpenTP1では，RPCによる要求が特定のノードに集中しないようにノード間で負荷を分散する機能があります。これをノード間負荷バランス機能といいます。

ノード間負荷バランス機能を使用するためには，負荷分散の前提として次の条件を満たしている必要があります。

複数のノードに同一のサービスを提供するユーザサーバが起動されていること。

各OpenTP1ノードはシステム共通定義のall_nodeオペランドに自分以外のノードを定義して，お互いのOpenTP1ノードで起動されているユーザサーバの情報（ネーム情報）をやり取りしていること。

Client .NETでは，TP1/Server側の判断による負荷分散機能だけを提供します。この場合，TP1/Serverのスケジュールサービスが，ノードのスケジュール状態に応じて，より効率的に処理できるノードへ負荷を分散させます。

ここでは，OpenTP1のノード間負荷バランス機能を使用する場合のClient .NET側，TP1/Server側の関連する定義，処理，およびRPCの処理を説明します。

ノード間負荷バランス機能の詳細については，マニュアル「OpenTP1 解説」を参照してください。

＜この節の構成＞

(1)　Client .NET側の定義

(2)　TP1/Server側の定義

(1)　Client .NET側の定義

Client .NET構成定義で次の指定をします。

<rpc>要素のuse属性にscdを指定

<scheduleService>要素を指定

スケジュールサービスが存在するOpenTP1ノードごとに<tp1Server>要素を指定

これらの指定によって，Client .NET側はTP1/Serverのスケジュールサービスに負荷分散を要求できます。Client .NET側の定義では，どのOpenTP1ノードのスケジュールサービスに判断を要求するかを指定します。

スケジュールを要求するOpenTP1ノードが複数ある場合（<tp1Server>要素を複数指定した場合），<tp1Server>要素を指定した順番にスケジュールを要求します。<tp1Server>要素を指定した順番ではなく，スケジュールを要求するTP1/Serverをランダムに選択する場合，<scheduleService>要素のrandomSelect属性にtrueを指定します。

(2)　TP1/Server側の定義

TP1/Serverの定義では，次のどちらかの設定をする必要があります。

スケジュールサービス定義のオペランドに次の指定をします。
scd_this_node_first=N
scd_announce_server_status=Y

スケジュールサービス定義を省略します。

2.8　TCP/IPコネクションの確立の監視機能

TCP/IPコネクションの確立の監視機能では，データ送信時のTCP/IPコネクションの確立処理に対する最大監視時間を指定し，コネクションの確立処理を監視できます。

コネクションの確立処理には，Client .NETの内部API（.NET FrameworkのAPI）であるSocket.Connectメソッド（以降「connectメソッド」と呼びます）が使用されます。connectメソッドのタイムアウト監視時間は，レジストリの設定値によって決まります。Client .NET構成定義でコネクション確立処理に対する最大監視時間を指定してコネクションの確立処理を監視すると，レジストリの設定値よりも短い時間で，Client .NETのAPIをエラーリターンさせることができます。connectメソッドでのコネクション確立処理に対する最大監視時間は，Client .NET構成定義の<socket>要素のconnectTimeout属性で指定します。

＜この節の構成＞

2.8.1　内部でconnectメソッドを使用するAPI

2.8.2　connectメソッドがタイムアウトした場合の例外

2.8.1　内部でconnectメソッドを使用するAPI

APIが内部でconnectメソッドを使用するかどうかは，Client .NET構成定義の指定によって異なります。内部でconnectメソッドを使用するAPI（メソッド）と，内部でconnectメソッドを使用するClient .NET構成定義の条件を次の表に示します。条件が二つ以上あるAPI（メソッド）の場合，内部でconnectメソッドを使用するには，一つ以上の条件を満たしている必要があります。

表2-6　内部でconnectメソッドを使用するAPI（メソッド）

項番
内部でconnectメソッドを使用するAPI（メソッド）
内部でconnectメソッドを使用するClient .NET構成定義の条件

1
SendAssembledMessage(System.Byte[], System.Int32, System.String, System.Int32, System.Int32, System.Int32)

<tcpip>要素のtype属性="send"

<tcpip>要素のtype属性="sendrecv"

2
Send(System.Byte[], System.Int32, System.String, System.Int32, System.Int32)

3
OpenConnection(System.String, System.Int32)
<rpc>要素のtype属性="rap"かつ<rapService>要素のautoConnect属性="false"

4
OpenConnection()

5
Call(System.String, System.String, System.Byte[], System.Int32, System.Byte[], System.Int32&, System.Int32)

<rpc>要素のtype属性="scd"

<rpc>要素のtype属性="nam"

または
<rpc>要素のtype属性="rap"かつ<rapService>要素のautoConnect属性="true"

6
CallTo(Hitachi.OpenTP1.Client.DCRpcBindTbl, System.String, System.String, System.Byte[], System.Int32, System.Byte[], System.Int32&, System.Int32)

<rpc>要素のtype属性="scd"

<rpc>要素のtype属性="nam"

7
Begin()
<rpc>要素のtype属性="rap"かつ<rapService>要素のautoConnect属性="true"

2.8.2　connectメソッドがタイムアウトした場合の例外

OSによるconnectメソッドのタイムアウト監視時間が満了した場合と，Client .NET構成定義の<socket>要素のconnectTimeout属性に指定した時間が満了した場合とでは，Client .NETのAPIから返る例外が異なります。これは，満了する監視時間の違いによって，発生する現象が異なるためです。

connectTimeout属性に，OSによるタイムアウト監視時間よりも大きい値を指定した場合，OSによるタイムアウト監視時間が先に満了します。このため，connectTimeout属性の指定は無効となります。connectTimeout属性の指定を省略した場合，connectメソッドのタイムアウト監視時間は，レジストリの設定値となります。

OSによるconnectメソッドのタイムアウト監視時間が満了した場合と，connectTimeout属性に指定した時間が満了した場合の，Client .NETのAPIが返す例外を次の表に示します。

表2-7　connectメソッドがタイムアウトした場合にAPI（メソッド）が返す例外

項番 | API（メソッド） | connectTimeout属性に指定した時間が満了した場合※1 | OSによるタイムアウト監視時間が満了した場合※2
1 | SendAssembledMessage(System.Byte[], System.Int32, System.String, System.Int32, System.Int32, System.Int32) | ErrClientTimedOutException | ErrNetDownAtClientException
2 | Send(System.Byte[], System.Int32, System.String, System.Int32, System.Int32) | ErrNetDownAtClientException | ErrNetDownAtClientException
3 | OpenConnection(System.String, System.Int32) | ErrClientTimedOutException | ErrNetDownAtClientException
4 | OpenConnection() | ErrClientTimedOutException | ErrNetDownAtClientException
5 | Call(System.String, System.String, System.Byte[], System.Int32, System.Byte[], System.Int32&, System.Int32) | ErrClientTimedOutException | ErrNetDownAtClientException
6 | CallTo(Hitachi.OpenTP1.Client.DCRpcBindTbl, System.String, System.String, System.Byte[], System.Int32, System.Byte[], System.Int32&, System.Int32) | ErrClientTimedOutException | ErrNetDownAtClientException
7 | Begin() | ErrClientTimedOutException | ErrNetDownAtClientException

注※1

Client .NET構成定義の<socket>要素のconnectTimeout属性に指定した時間が満了した場合に発生する例外です。

注※2

connectメソッドでOSによるコネクション確立処理の監視時間が満了した場合に発生する例外です。コネクション確立処理の監視時間（コネクション確立要求の再送回数，間隔）はレジストリの設定によって異なります。

2.9　トラブルシュート機能

Client .NETは，トラブルシュート機能として，次のトレース情報を取得できます。

UAPトレース※1

データトレース※1

エラートレース※1

メモリトレース※2

メソッドトレース※1

デバッグトレース※1，※3

注※1

ファイルに出力されます。

注※2

CUP.NETがあらかじめ用意しているSystem.String型の配列に格納されます。

注※3

常にClient .NETのメモリ内に取得されます。また，Client .NETが提供するメソッドが例外を返した場合，標準出力に出力されることがあります。

＜この節の構成＞

2.9.1　トレースファイル

2.9.2　UAPトレース

2.9.3　データトレース

2.9.4　エラートレース，メモリトレース

2.9.5　メソッドトレース

2.9.6　デバッグトレース

2.9.7　TP1/Serverの性能検証用トレース

2.9.1　トレースファイル

トレースファイルに指定できるオプションとその指定方法を次の表に示します。

表2-8　 トレースファイルに指定できるオプションとその指定方法

トレースファイル
オプション
指定方法

UAPトレース
ファイル出力先ディレクトリ
次のどちらかで指定します。

SetUapTraceModeメソッドのTrcPathパラメタ

Client .NET構成定義の<uapTrace>要素のpath属性

トレースファイルのサイズ
次のどちらかで指定します。

SetUapTraceModeメソッドのsizeパラメタ

Client .NET構成定義の<uapTrace>要素のfileSize属性

データトレース
ファイル出力先ディレクトリ
次のどちらかで指定します。

SetDataTraceModeメソッドのTrcPathパラメタ

Client .NET構成定義の<dataTrace>要素のpath属性

トレースファイルのサイズ
次のどちらかで指定します。

SetDataTraceModeメソッドのsizeパラメタ

Client .NET構成定義の<dataTrace>要素のfileSize属性

データトレースの最大データ長
次のどちらかで指定します。

SetDataTraceModeメソッドのDataSizeパラメタ

Client .NET構成定義の<dataTrace>要素のmaxDataSize属性

エラートレース
ファイル出力先ディレクトリ
次のどちらかで指定します。

SetErrorTraceModeメソッドのTrcPathパラメタ

Client .NET構成定義の<errTrace>要素のpath属性

トレースファイルのサイズ
次のどちらかで指定します。

SetErrorTraceModeメソッドのsizeパラメタ

Client .NET構成定義の<errTrace>要素のfileSize属性

メソッドトレース
ファイル出力先ディレクトリ
次のどちらかで指定します。

SetMethodTraceModeメソッドのTrcPathパラメタ

Client .NET構成定義の<methodTrace>要素のpath属性

トレースファイルのサイズ
次のどちらかで指定します。

SetMethodTraceModeメソッドのsizeパラメタ

Client .NET構成定義の<methodTrace>要素のfileSize属性

デバッグトレース
ファイル出力先ディレクトリ
Client .NET構成定義の<debugTrace>要素のpath属性で指定します。

デバッグトレースの最大ファイル数
Client .NET構成定義の<debugTrace>要素のfileCount属性で指定します。

トレース情報の出力ファイル名を次の表に示します。

表2-9　トレース情報の出力ファイル名

トレースファイル
出力ファイル名

UAPトレース
dcuap1.trc
dcuap2.trc

データトレース
dcdat1.trc
dcdat2.trc

エラートレース
dcerr1.trc
dcerr2.trc

メソッドトレース
dcmtd1.trc
dcmtd2.trc

デバッグトレース
dcCltxxxxxxxxxxxxx.dmp
（xxxxxxxxxxxxx：時刻から生成される数字）

指定したファイル出力先ディレクトリに出力ファイル名のファイルがない場合は，新規にトレースファイルを作成します。また，指定したディレクトリがない場合，および指定したディレクトリに書き込み権限がない場合は，トレースファイルを出力できません。

ファイルへの書き込みは追加モードで実行されます。二つのトレースファイルはラウンドロビン方式で使用されます（デバッグトレースのトレースファイルは除きます）。指定したトレースファイルのサイズを超えた書き込みが発生すると，ファイルの切り替えを行い，次のファイルの先頭から書き込みます。したがって，切り替えられる前のファイルは指定したサイズよりもファイルのサイズが大きくなる場合があります。

複数のCUP.NETのトレースファイルの出力先に同じディレクトリを指定すると，複数のCUP.NETのトレース情報が混在し，トラブルシュートが困難になる場合があります。そのため，トレースファイルの出力先ディレクトリは，それぞれのCUP.NETで別々にすることをお勧めします。

2.9.2　UAPトレース

UAPトレースは，Client .NETが提供するメソッドの実行トレースとして，メソッドの開始時と終了時に次の情報を取得します。

日付

時刻

入り口と出口の種別

実行スレッドの情報

呼び出したメソッド名

発生した例外

TP1/Serverに伝播する性能検証用の識別情報※

指定した引数の情報

呼び出したメソッドに関係する情報

送受信したデータの内容

注※

一部のメソッドを実行したときにUAPトレースに出力される情報です。詳細については，「2.9.7　TP1/Serverの性能検証用トレース」を参照してください。

送受信したデータの内容は，Callメソッドが受け渡したデータを取得します。なお，送受信データ長が60バイトを超える場合は，先頭の60バイトを取得します。クライアントスタブを使用している場合は，スタブが変換した送信データ，およびサーバから受信したデータが記録されます。

UAPトレースは，UAPおよびClient .NETのメソッド発行履歴を取得できるため，UAPのテストおよびデバッグに有効です。また，障害発生時の問題発生個所の特定や切り分けをする場合にも使用できます。

UAPトレース情報の出力ファイル名，および指定できるオプションとその指定方法については，「2.9.1　トレースファイル」を参照してください。

UAPトレースファイルの出力形式を次に示します。

yyyy：UAPトレース取得年

mm：UAPトレース取得月

dd：UAPトレース取得日

hh:mm:ss.uuu：UAPトレース取得時間

lll：UAPトレース取得場所

入り口の場合は「In」，出口の場合は「Out」が出力されます。

ttt：UAPトレースを取得したスレッドの情報

次の形式で取得されます。

プロセス名[プロセスID]，スレッド名[スレッドID]

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn：呼び出したメソッドの名前

eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee：発生した例外

メソッドの入り口で取得されるトレースの場合，または例外が発生しなかった場合は出力されません。

xxxxxxxxxxxxxxxxxxxxxxxxxx：TP1/Serverに伝播する性能検証用の識別情報

iii：メソッドの呼び出し情報

各メソッドの呼び出し情報を，以降の表に示します。

表2-10　AcceptNotificationメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | サーバからの通知メッセージを格納する領域の長さ | inf_len | inf_len引数で指定したサーバからの通知メッセージを格納する領域の長さ
サーバからの通知メッセージを受信するポート番号 | port | port引数で指定したサーバからの通知メッセージを受信するポート番号
タイムアウト値 | timeout | timeout引数で指定したタイムアウト値
出口 | サーバからの通知メッセージ | inf | inf引数に格納したサーバからの通知メッセージ
サーバからの通知メッセージの長さ | inf_len | inf_len引数に格納したサーバからの通知メッセージの長さ
サーバのホスト名 | hostname | hostname引数に格納したサーバのホスト名
サーバのノード識別子 | nodeid | nodeid引数に格納したサーバのノード識別子

表2-11　AcceptNotificationChainedメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | サーバからの通知メッセージを格納する領域の長さ | inf_len | inf_len引数で指定したサーバからの通知メッセージを格納する領域の長さ
タイムアウト値 | timeout | timeout引数で指定したタイムアウト値
出口 | サーバからの通知メッセージ | inf | inf引数に格納したサーバからの通知メッセージ
サーバからの通知メッセージの長さ | inf_len | inf_len引数に格納したサーバからの通知メッセージの長さ
サーバのホスト名 | hostname | hostname引数に格納したサーバのホスト名
サーバのノード識別子 | nodeid | nodeid引数に格納したサーバのノード識別子

表2-12　Beginメソッドの呼び出し情報

取得場所
項目
文字列
内容

入り口
トランザクションブランチ限界経過時間
expireTime
Client .NET構成定義の<transaction>要素のexpireTime属性で指定した値。
値を指定していない場合，-1が設定されます。

トランザクションブランチCPU監視時間
cpuTime
Client .NET構成定義の<transaction>要素のcpuTime属性で指定した値。
値を指定していない場合，-1が設定されます。

トランザクションブランチの監視時間の対象
expireSuspend
Client .NET構成定義の<transaction>要素のexpireSuspend属性で指定した値。
値を指定していない場合，0が設定されます。

all：89

async：78

none：70

統計情報取得項目
statistics
Client .NET構成定義の<transaction>要素のstatistics属性で指定した値。
値を指定していない場合，-1が設定されます。

base：0x80000000

executiontime：0x40000000

cputime：0x20000000

nothing：0

トランザクション最適化項目
optimize
Client .NET構成定義の<transaction>要素のoptimize属性で指定した値。
値を指定していない場合，-1が設定されます。

base：0x00000003

asyncprepare：0x00000004

トランザクション同期点処理時の最大通信待ち時間
internalWatchTime
Client .NET構成定義の<transaction>要素のinternalWatchTime属性で指定した値。
値を指定していない場合，-1が設定されます。

ロールバック情報取得の値
rollbackInfo
Client .NET構成定義の<transaction>要素のrollbackInfo属性で指定した値。
値を指定していない場合，-1が設定されます。

no：0

self：0x00000001

remote：0x00000002

all：0x00000003

トランザクションブランチ最大実行可能時間の値
limitTime
Client .NET構成定義の<transaction>要素のlimitTime属性で指定した値。
値を指定していない場合，-1が設定されます。

ロールバック完了通知の値
rollbackResponse
Client .NET構成定義の<transaction>要素のrollbackResponse属性で指定した値。
値を指定していない場合，-1が設定されます。

true

false

UAP障害時の同期点処理方式の値
recoveryType
Client .NET構成定義の<transaction>要素のrecoveryType属性で指定した値。
値を指定していない場合，-1が設定されます。

type1：0x00000001

type2：0x00000002

type3：0x00000004

出口
性能検証用トレースの識別情報
PrfInfo
性能検証用トレースの識別情報

表2-13　Callメソッドの呼び出し情報

取得場所
項目
文字列
内容

入り口
サービスグループ名
group
呼び出すサービスのサービスグループ名

サービス名
service
呼び出すサービス名

送信データ長
in_len
送信するデータの長さ

送信データ
in_data
送信するデータ

受信データ長
out_len
受信するデータの長さ

オプションフラグ
flags
Callメソッドのflagsパラメタに指定した値。
次のどれかの値が設定されます。

DCNOFLAGS：0x00000000

DCRPC_NOREPLY：0x00000001

DCRPC_CHAINED：0x00000004

トランザクション中は次のフラグが設定される場合があります。

DCRPC_TPNOTRAN：0x00000020

最大応答待ち時間
watchTime
SetRpcWatchTimeメソッドで指定された最大応答待ち時間

rapサーバ通信遅延時間
delay
SetRapDelayメソッドで指定されたrapサーバ通信遅延時間

出口※
受信データ長
out_len
受信した応答の長さ

受信データ
out_data
受信したデータ

性能検証用トレースの識別情報
PrfInfo
性能検証用トレースの識別情報

注※

非応答型サービス要求の場合，出口情報は性能検証用トレースの識別情報だけです。

表2-14　CallToメソッドの呼び出し情報

取得場所
項目
文字列
内容

入り口
接続先ホスト名
ConnectionHost
DCRpcBindTblクラスで指定されたホスト名

接続先ポート番号
ConnectionPort
DCRpcBindTblクラスで指定されたポート番号

通信プロトコルフラグ
Protocol
CallToメソッドの通信プロトコルフラグ

DCRPC_SCDPORT：0x00000002

サービスグループ名
group
呼び出すサービスのサービスグループ名

サービス名
service
呼び出すサービス名

送信データ長
in_len
送信するデータの長さ

送信データ
in_data
送信するデータ

受信データ長
out_len
受信するデータの長さ

オプションフラグ
flags
CallToメソッドのflagsパラメタに指定した値。
次のどちらかの値が設定されます。

DCNOFLAGS：0x00000000

DCRPC_NOREPLY：0x00000001

最大応答待ち時間
watchTime
SetRpcWatchTimeメソッドで指定された最大応答待ち時間

rapサーバ通信遅延時間
delay
SetRapDelayメソッドで指定されたrapサーバ通信遅延時間

出口※
受信データ長
out_len
受信した応答の長さ

受信データ
out_data
受信したデータ

性能検証用トレースの識別情報
PrfInfo
性能検証用トレースの識別情報

注※

非応答型サービス要求の場合，出口情報は性能検証用トレースの識別情報だけです。

表2-15　CancelNotificationメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | CUP.NETに通知するメッセージ | inf | inf引数で指定したCUP.NETに通知するメッセージ
CUP.NETに通知するメッセージの長さ | inf_len | inf_len引数で指定したCUP.NETに通知するメッセージの長さ
一方通知受信待ち状態のCUP.NETのホスト名 | hostname | hostname引数で指定した一方通知受信待ち状態のCUP.NETのホスト名
一方通知受信待ち状態のCUP.NETのポート番号 | port | port引数で指定した一方通知受信待ち状態のCUP.NETのポート番号
出口 | なし | － | －

（凡例）

－：該当しません。

表2-16　CloseConnectionメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | 最大応答待ち時間 | watchTime | SetRpcWatchTimeメソッドで指定された最大応答待ち時間
出口 | 性能検証用トレースの識別情報 | PrfInfo | 性能検証用トレースの識別情報

表2-17　Commitメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | なし | － | －
出口 | 性能検証用トレースの識別情報 | PrfInfo | 性能検証用トレースの識別情報

（凡例）

－：該当しません。

表2-18　CommitChainedメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | なし | － | －
出口 | 性能検証用トレースの識別情報 | PrfInfo | 性能検証用トレースの識別情報

（凡例）

－：該当しません。

表2-19　GetTransactionIDメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | なし | － | －
出口 | トランザクショングローバル識別子 | trngid | メソッドが正常終了の場合だけ取得されます。
トランザクションブランチ識別子 | trnbid | メソッドが正常終了の場合だけ取得されます。

（凡例）

－：該当しません。

表2-20　GetTransactionInfoメソッドの呼び出し情報

取得場所
項目
文字列
内容

入り口
なし
－
－

出口
トランザクション中フラグ
isTransaction

トランザクション中である：True

トランザクション中ではない：False

（凡例）

－：該当しません。

表2-21　OpenConnectionメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | 接続先ホスト名 | host | hostパラメタで指定されたrapリスナーまたはファイアウォールのホスト名
接続先ポート番号 | port | portパラメタで指定されたrapリスナーまたはファイアウォールのポート番号
rapサーバ問い合わせ間隔最大時間 | inquireTime | SetRapInquireTimeメソッドで指定されたrapサーバ問い合わせ間隔最大時間
最大応答待ち時間 | watchTime | SetRpcWatchTimeメソッドで指定された最大応答待ち時間
出口 | 性能検証用トレースの識別情報 | PrfInfo | 性能検証用トレースの識別情報

表2-22　OpenNotificationメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | サーバからの通知メッセージを受信するポート番号 | port | port引数で指定したサーバからの通知メッセージを受信するポート番号
出口 | なし | － | －

（凡例）

－：該当しません。

表2-23　OpenRpcメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | プロファイルID | profileId | profileIdパラメタで指定された，使用するプロファイルID
出口 | プロファイルID | profileId | profileIdパラメタで指定された，使用するプロファイルID

表2-24　ReceiveAssembledMessageメソッドの呼び出し情報

取得場所
項目
文字列
内容

入り口
受信メッセージの最大待ち時間
timeout
受信メッセージの最大待ち時間

オプションフラグ
flags
ReceiveAssembledMessageメソッドのflagsパラメタで指定した値。
次のどちらかの値が設定されます。

DCNOFLAGS：0x00000000

DCCLT_RCV_CLOSE：0x00000002

出口
受信データ長
recvleng
受信した応答の長さ

受信データ
buff
受信したデータ

表2-25　Rollbackメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | なし | － | －
出口 | 性能検証用トレースの識別情報 | PrfInfo | 性能検証用トレースの識別情報

（凡例）

－：該当しません。

表2-26　RollbackChainedメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | なし | － | －
出口 | 性能検証用トレースの識別情報 | PrfInfo | 性能検証用トレースの識別情報

（凡例）

－：該当しません。

表2-27　SendAssembledMessageメソッドの呼び出し情報

取得場所
項目
文字列
内容

入り口
送信データ
buff
送信するデータ

送信データ長
sendleng
送信データの長さ

接続先ホスト名
hostname
hostnameパラメタで指定した通信相手のホスト名

接続先ポート番号
portnum
portnumパラメタで指定した通信相手のポート番号

送信メッセージの最大待ち時間
timeout
送信メッセージの最大待ち時間

オプションフラグ
flags
SendAssembledMessageメソッドのflagsパラメタで指定した値。
次のどちらかの値が設定されます。

DCNOFLAGS：0x00000000

DCCLT_SND_CLOSE：0x00000001

出口
なし
－
－

（凡例）

－：該当しません。

表2-28　SetConnectInformationメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | DCCM3論理端末の論理端末名 | inf | infパラメタで指定されたDCCM3論理端末の論理端末名
端末識別情報長 | inf_len | inf_lenパラメタで指定された端末識別情報長
出口 | なし | － | －

（凡例）

－：該当しません。

表2-29　SetDataTraceModeメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | データトレースを出力するディレクトリ | TrcPath | TrcPath引数で指定したデータトレースを出力するディレクトリ
出力するデータトレースファイルのサイズ | size | size引数で指定した出力するデータトレースファイルのサイズ
データトレースに出力するデータサイズ | DataSize | DataSize引数で指定したデータトレースに出力するデータサイズ
データトレースの取得可否フラグ | flag | flag引数で指定したデータトレースの取得可否フラグ
出口 | なし | － | －

（凡例）

－：該当しません。

表2-30　SetErrorTraceModeメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | エラートレースを出力するディレクトリ | TrcPath | TrcPath引数で指定したエラートレースを出力するディレクトリ
出力するエラートレースファイルのサイズ | size | size引数で指定した出力するエラートレースファイルのサイズ
エラートレースの取得可否フラグ | flag | flag引数で指定したエラートレースの取得可否フラグ
出口 | なし | － | －

（凡例）

－：該当しません。

表2-31　SetExtendLevelメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | 拡張機能のレベル | flags | Client .NETの機能の拡張レベル
出口 | なし | － | －

（凡例）

－：該当しません。

表2-32　SetMethodTraceModeメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | メソッドトレースを出力するディレクトリ | TrcPath | TrcPath引数で指定したメソッドトレースを出力するディレクトリ
出力するメソッドトレースファイルのサイズ | size | size引数で指定した出力するメソッドトレースファイルのサイズ
メソッドトレースの取得可否フラグ | flag | flag引数で指定したメソッドトレースの取得可否フラグ
出口 | なし | － | －

（凡例）

－：該当しません。

表2-33　SetRapDelayメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | rapサーバ通信遅延時間 | sec | rapサーバ通信遅延時間
出口 | なし | － | －

（凡例）

－：該当しません。

表2-34　SetRapInquireTimeメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | rapサーバ問い合わせ間隔最大時間 | sec | rapサーバ問い合わせ間隔最大時間
出口 | なし | － | －

（凡例）

－：該当しません。

表2-35　SetRpcExtendメソッドの呼び出し情報

取得場所
項目
文字列
内容

入り口
拡張機能のレベル
extendoption
RPC機能の拡張レベル。
次のどれかの値が設定されます。

DCRPC_SCD_LOAD_PRIORITY：0x00000008

DCRPC_WATCHTIMINHERIT：0x00000010

DCRPC_RAP_AUTOCONNECT：0x00000020

DCRPC_WATCHTIMRPCINHERIT：0x00000040

出口
なし
－
－

（凡例）

－：該当しません。

表2-36　SetRpcWatchTimeメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | 最大応答待ち時間 | sec | 最大応答待ち時間
出口 | なし | － | －

（凡例）

－：該当しません。

表2-37　SetTP1Serverメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | 接続先ホスト名 | host | hostパラメタで指定されたホスト名
接続先ポート番号 | port | portパラメタで指定されたポート番号
出口 | なし | － | －

（凡例）

－：該当しません。

表2-38　SetUapTraceModeメソッドの呼び出し情報

取得場所 | 項目 | 文字列 | 内容
入り口 | UAPトレースを出力するディレクトリ | TrcPath | TrcPath引数で指定したUAPトレースを出力するディレクトリ
出力するUAPトレースファイルのサイズ | size | size引数で指定した出力するUAPトレースファイルのサイズ
UAPトレースの取得可否フラグ | flag | flag引数で指定したUAPトレースの取得可否フラグ
出口 | なし | － | －

（凡例）

－：該当しません。

2.9.3　データトレース

データトレースは，CUP.NETとOpenTP1間の送受信メッセージの内容を取得します。

データトレースは，UAPテスト時のRPCメッセージのデータ形式を確認する場合などに使用します。データ不正などの障害が発生した場合のメッセージ内容の検証にも使用できます。

データトレース情報の出力ファイル名，および指定できるオプションとその指定方法については，「2.9.1　トレースファイル」を参照してください。

データトレースファイルの出力形式を次に示します。

CUP.NETとOpenTP1間の送受信メッセージのデータトレース

データトレースのロケーション

データトレースの16進表示のデータ

データトレースの文字表示のデータ

yyyy：データトレース取得年

mm：データトレース取得月

dd：データトレース取得日

hh:mm:ss.uuu：データトレース取得時間

eeeee：データトレース取得項目

送信の場合は「Send」，受信の場合は「Receive」が出力されます。

ttt：データトレースを取得したスレッドの情報

次の形式で取得されます。

プロセス名[プロセスID]，スレッド名[スレッドID]

2.9.4　エラートレース，メモリトレース

エラートレースは，Client .NETが検知した障害をメッセージ形式でファイルに記録します。メソッド実行中に障害が発生した場合，その原因は例外として報告されます。例外だけでは原因を特定できない場合，このファイルに出力された詳細なエラー情報を参照すると，通信障害などの障害発生時の原因を特定することが容易になります。エラートレースは，本番運用でも常に取得することをお勧めします。

メモリトレースは，エラートレースと同じ内容をメモリ上でSystem.String型の配列に格納します。エラートレースのファイルに書き込みができない環境（ランタイムホスト）で，Client .NETが提供するクラスライブラリを動作させる場合は，メモリトレースを使用します。取得したメモリトレースの情報は，アプリケーション側で必要に応じて表示および記録ができるようにしておいてください。

エラートレース情報の出力ファイル名，および指定できるオプションとその指定方法については，「2.9.1　トレースファイル」を参照してください。

エラートレースファイルの出力形式，またはメモリトレースのSystem.String型の配列への格納形式を次に示します。

ttt：エラートレース，またはメモリトレースを取得したスレッドの情報

次の形式で取得されます。

プロセス名[プロセスID]，スレッド名[スレッドID]

yyyy：エラートレース，またはメモリトレース取得年

mm：エラートレース，またはメモリトレース取得月

dd：エラートレース，またはメモリトレース取得日

hh:mm:ss.uuu：エラートレース，またはメモリトレース取得時間

ee....ee：メッセージ

記録されるメッセージについては，マニュアル「OpenTP1 メッセージ」を参照してください。

2.9.5　メソッドトレース

メソッドトレースは，Client .NETの保守用のトレースで，内部動作が記録されます。

メソッドトレース情報の出力ファイル名，および指定できるオプションとその指定方法については，「2.9.1　トレースファイル」を参照してください。

障害発生時の原因を究明するために，メソッドトレースの取得が必要になる場合があります。保守員の指示に従ってください。

2.9.6　デバッグトレース

デバッグトレースは，Client .NETの保守用のトレースで，障害発生時の直前の内部動作が記録されます。

デバッグトレース情報は，常にメモリ内に取得し，Client .NETが提供するメソッドが例外を返した場合に，バイナリ形式のデータがファイルに出力されます。ファイルに保存できないときは，編集されたテキスト形式のデータが標準出力に出力されます。

障害発生時に調査を依頼する場合は，デバッグトレースを必ず送付してください。

2.9.7　TP1/Serverの性能検証用トレース

TP1/Serverの性能検証用トレース（prfトレース）とは，TP1/Server上で動作する各種サービスの主なイベントのトレース情報です。この性能検証用トレースは，性能検証の効率，およびトラブルシュートの効率を向上させることが目的のトレース情報です。

Client .NETでは，TP1/Serverの性能検証用トレースにClient .NETが設定した性能検証用の識別情報を出力できます。この性能検証用の識別情報は，Client .NETのトレースにも出力されます。これによって，次の利点があります。

Client .NETのメソッドの実行時間（UAPトレースによって取得）と，TP1/Serverのサービスの実行時間（性能検証用トレースによって取得）との照合ができます。

障害が発生したときに，処理がどこまで到達したかを知ることができます。

＜この項の構成＞

(1)　TP1/Serverへの性能検証用の識別情報の伝播

(2)　TP1/ServerとClient .NETとのトレースの照合

(3)　性能検証用の識別情報

(4)　トレース情報の取得ポイント

(1)　TP1/Serverへの性能検証用の識別情報の伝播

TP1/Serverへ性能検証用の識別情報を伝播する場合は，<tp1Server>要素のprfInfoSend属性にtrueを指定します。TP1/Serverのバージョンが03-03以降の場合に，性能検証用の識別情報を伝播できます。また，バージョン07-02以降のTP1/Serverに対して，リモートAPI機能を使用したRPCを行う場合は，スケジューラに送信するRPCメッセージ中への識別情報（IPアドレスなど）を付加できます。

注意

スケジューラダイレクト機能を使用したRPCでサービス要求先のTP1/Serverのバージョンが03-03未満である場合，RPCを行ったときに，SPPのサービス関数に不正なデータを渡す可能性があります。したがって，この場合，TP1/Server上へ性能検証用の識別情報を伝播しないでください（<tp1Server>要素のprfInfoSend属性にfalseを指定してください）。

なお，ネームサービス機能を使用したRPCでサービス要求先のTP1/Serverのバージョンが03-03未満である場合，TP1/Server上へ性能検証用の識別情報を伝播するように設定しても，この設定は無視されるため性能検証用の識別情報は伝播できません。

(2)　TP1/ServerとClient .NETとのトレースの照合

TP1/Serverに対して，ネームサービスを使用したRPC，およびスケジューラダイレクト機能を使用したRPCを行う場合は，スケジューラに送信するRPCメッセージ中に，TP1Clientクラスのインスタンスごとにほぼ一意となる識別情報（IPアドレスなど）を付加できます。付加した情報は，Client .NETのトレースに出力されます。また，これと同じ情報はTP1/Serverの性能検証用トレースにも出力されます。

このClient .NETのトレースと，TP1/Serverの性能検証用トレースとを照合することによって，Client .NETとTP1/Serverとの間の，一連の処理の流れを知ることができます。ただし，TP1/Serverに対して，リモートAPI機能を使用したRPCを行う場合は，スケジューラに送信するRPCメッセージ中への識別情報（IPアドレスなど）の付加はできません。

(3)　性能検証用の識別情報

Client .NETの性能検証用の識別情報は，Client .NETのトレース，およびTP1/Serverの性能検証用トレースに出力されます。出力例を次に示します。

(a)　性能検証用の識別情報として取得する情報

ノードID：_N[bb]（4バイトの英数字）

bb：ランダムな2文字の英数字（数字（0～9）またはアルファベット（A～Z，a～z））

ルート通信通番：[xxxxxxxx]（4バイトの16進表示のデータ）

xxxxxxxx：IPアドレス

RPC通信通番：[yyyy][zzzz]（4バイトの16進表示のデータ）

yyyy：ランダムな2バイトの16進数字

zzzz：通信通番（該当するAPIの呼び出しごとにインクリメントされます）

(b)　Client .NETのトレースファイルの出力例

UAPトレースファイル（取得ポイントは，TP1ClientクラスのCallメソッドの出口）

2005/11/11 14:02:38.631  Location = Out  ThreadInfo = Test[3244],[2156]
MethodName = TP1Client.Call
Exception  =
PrfInfo    = _N[bb]/0x[xxxxxxxx]/0x[yyyy][zzzz]
[Information]

エラートレースファイル（取得ポイントは，TP1ClientクラスのCallメソッドの出口）

(Test[2700],[2860]) 2005/11/11 15:06:00.108 KFCA32302-E 例外が発生しました。 保守情報=-7632, 例外=ErrClientTimedOutException(PrfInfo=_N[bb]/0x[xxxxxxxx]/0x[yyyy][zzzz]), メソッド=TP1Client.Call(TP1Client.Call)

(c)　TP1/Serverの性能検証用トレースファイルの出力例

PRF: Rec Node: smpl Run-ID: 0x43742533 Process: 1952       Trace: 1             Event: 0x2002 Time: 2005/11/11 14:02:36 583.000.000 Server-name: _scd    
Rc: *********** Client:  - 0x[yyyy][zzzz]     Server: **** Root: _N[bb] - 0x[xxxxxxxx]  Svc-Grp: echo_svg                         Svc: echo1                            Trn: *

(4)　トレース情報の取得ポイント

次に示すメソッドを実行するたびに，UAPトレースファイルの出口にトレース情報が取得されます。

Begin

Call

CallTo

CloseConnection

Commit

CommitChained

OpenConnection

Rollback

RollbackChained

Callメソッド，およびCallToメソッドを実行した場合，<rpc>要素のuse属性がscdまたはnamで，かつ<rpc>要素のprfInfoSend属性がtrueのときは，TP1/Serverへ性能検証用の識別情報が伝播されます。

2.10　データ圧縮機能

データ圧縮機能を使用すると，RPCによってネットワーク上に送り出されるユーザデータを圧縮できます。これによってネットワーク上に送り出されるパケット数を削減し，ネットワークの混雑を緩和できます。

データ圧縮機能を使用するかどうかは，Client .NET構成定義の<rpc>要素のcompressData属性で指定します。

この機能を使用すると，Client .NETはCUP.NETから実行するCallメソッドで設定する入力パラメタ（in_data）の値を，圧縮効果がある場合は圧縮してネットワーク上に送り出します。その問い合わせに対し，SPPまたはSPP.NETから返される応答（out_data）の値もTP1/Serverで圧縮されてネットワーク上に送り出されてきます。その応答を受け取ったClient .NETは，圧縮データを復元してCUP.NETに渡します。

データ圧縮機能の概要を次の図に示します。

図2-18　データ圧縮機能の概要

この機能は，サービス要求先のTP1/Serverが03-03以降※の場合に使用できます。また，RPCの通信形態，およびすべてのRPCインタフェースで使用できます。ただし，サービス要求先のTP1/Serverのバージョンによって，次の点が異なります。

TP1/Serverのバージョンが03-06未満の場合
入力パラメタの値が圧縮されていなかった場合，返される応答の値に圧縮効果があっても，応答の値はTP1/Serverで圧縮されません。

TP1/Serverのバージョンが03-06以降の場合
入力パラメタの値が圧縮されていなかった場合でも，返される応答の値に圧縮効果があれば，応答の値はTP1/Serverで圧縮されます。

注※

リモートAPI機能を使用したRPCの場合は，TP1/Serverのバージョンが03-05以降のときにデータ圧縮機能を使用できます。

＜この節の構成＞

2.10.1　データ圧縮機能の効果

2.10.2　データ圧縮機能を使用するときの注意事項

2.10.1　データ圧縮機能の効果

データ圧縮機能の効果は，ユーザデータの内容に依存します。ユーザデータ中に連続した同じ文字が多く現れる場合には効果がありますが，ユーザデータの内容によっては，ほとんど効果がない場合もあります。

また，データ圧縮／復元のためのオーバヘッドが掛かるため，データ圧縮による効果とのバランスを考慮し，事前に性能評価をしてからデータ圧縮機能の使用を検討してください。

2.10.2　データ圧縮機能を使用するときの注意事項

データ圧縮機能を使用する場合の注意事項を次に示します。

スケジューラダイレクト機能を使用したRPCでサービス要求先のTP1/Serverのバージョンが03-03未満である場合，RPCを行ったときに，SPPのサービス関数に不正なデータを渡す可能性があります。したがって，この場合，TP1/Serverに対して，データ圧縮機能を使用してサービス要求しないでください（<rpc>要素のcompressData属性にfalseを指定してください）。
なお，ネームサービス機能を使用したRPCでサービス要求先のTP1/Serverのバージョンが03-03未満である場合，データ圧縮機能を使用するように設定しても，この設定は無視されるためデータ圧縮機能は使用できません。

圧縮前より圧縮後のデータの方がデータが大きくなってしまう場合やサービス要求先のTP1/Serverがデータ圧縮機能をサポートしていない場合は，Client .NETのエラートレースファイルにKFCA32306-Wメッセージが出力され処理は続行されます。この場合，データは圧縮されません。

DCCM3の論理端末に常設コネクションを確立しサービスを要求する場合，データ圧縮機能は使用できません。

Callメソッドがエラーを返した場合のサービスの応答（out_data）は保証しません。

RPCメッセージの最大長（Callメソッドで送受信できるユーザメッセージの最大長）は，データ圧縮機能の使用に関係なく，常に<rpc>要素のmaxMessageSize属性で指定した値か，または省略時仮定値（1メガバイト）です。

2.11　MSDTC連携機能

MSDTC連携機能を使用すると，MSDTCを利用するほかのリソースとOpenTP1が使用するリソースとの間で分散トランザクション連携ができます。

Client .NETからMSDTC連携機能を使用する場合は，Connector .NETが必要です。Client .NET単体の場合はMSDTC機能は使用できません。詳細については，マニュアル「TP1/Connector for .NET Framework 使用の手引」のMSDTC連携機能に関する記述を参照してください。

MSDTC連携機能を使用する場合にClient .NETで使用できる機能を次の表に示します。

表2-39　MSDTC連携機能使用時にClient .NETで使用できる機能

分類 | Client .NETの機能 | 使用可否
Client .NETの通信方式 | リモートAPI機能 | ○
スケジューラダイレクト機能 | ×
ネームサービス | ×
コネクトモード | オートコネクトモード | ○
非オートコネクトモード | ×
RPCの呼び出し形態 | 同期応答型RPC | ○
非応答型RPC | ○
連鎖型RPC | ○
トランザクションを引き継がないRPC | ○

（凡例）

○：使用できます。

×：使用できません。

なお，Client .NET構成定義の<tp1Server>要素に指定できる窓口となるTP1/Serverは，プロファイルIDごとに一つだけ指定してください。複数指定した場合，トランザクションを正常に制御できません。

2.12　環境設定

Client .NETのインストール後に必要な，環境設定やセキュリティポリシーの設定などについて説明します。

＜この節の構成＞

2.12.1　インストール後の環境設定

2.12.2　セキュリティポリシーの設定

2.12.3　メッセージの出力先

2.12.1　インストール後の環境設定

運用コマンドを使用する場合は，PATH環境変数に〈インストールディレクトリ〉¥binを追加してください。

Visual StudioでUAPを開発する場合は，必要に応じて次に示すアセンブリをUAPのプロジェクトの参照設定に追加してください。

〈インストールディレクトリ〉¥bin¥Hitachi.OpenTP1.Client.dll

なお，このアセンブリはインストール時にグローバルアセンブリキャッシュ（GAC）に登録されます。

2.12.2　セキュリティポリシーの設定

Client .NETをインストールおよび実行することで，インストールおよび実行したOS上の.NET Frameworkのコードアクセスセキュリティポリシーを変更してしまうことはありません。

Client .NETの機能を利用するためには，次に示すファイルに必要なアクセス許可が与えられていなければなりません。必要なアクセス許可が与えられていない場合は，コマンドやアプリケーションが実行できません。

＜この項の構成＞

(1)　.NET Frameworkのコードアクセスセキュリティポリシーの影響を受けるファイル（アセンブリ）

(2)　必要なアクセス許可

(1)　.NET Frameworkのコードアクセスセキュリティポリシーの影響を受けるファイル（アセンブリ）

〈インストールディレクトリ〉¥bin¥if2cstub.exe

〈インストールディレクトリ〉¥bin¥spp2cstub.exe

〈インストールディレクトリ〉¥bin¥Hitachi.OpenTP1.Client.dll

CUP.NETのアセンブリ，およびClient .NETのアセンブリを参照するすべてのアセンブリ

(2)　必要なアクセス許可

運用コマンドには完全信頼を指定する必要があります。Hitachi.OpenTP1.Client.dllには次の表に示すアクセス許可がすべて必要です。

表2-40　Hitachi.OpenTP1.Client.dllに必要なアクセス許可

アクセス許可の種類 | アクセス許可
セキュリティ | コードの実行を有効にする
リフレクション | 無制限
ファイルIO | 無制限
ソケットアクセス | 無制限
DNS | 無制限

2.12.3　メッセージの出力先

Client .NETが提供する運用コマンドが出力するメッセージは，標準出力または標準エラー出力に出力されます。クラスライブラリが出力するメッセージは，エラートレースに出力されます。

エラートレースの出力先は，構成ファイルのプロパティで指定するか，またはSetErrorTraceModeメソッドで指定できます。

エラートレースについては，「2.9.4　エラートレース，メモリトレース」を参照してください。

2.13　送信元ホスト指定機能

Client .NETでは，RPCやTCP/IP通信機能でのコネクション確立要求時に，CUP.NETの送信元ホストを指定できます。この機能を，送信元ホスト指定機能といいます。

CUP.NETが動作するホスト上に，複数のネットワークアダプタが接続されている場合，CUP.NETがこれらのコネクション確立要求時に使用する送信元ホストは，TCP/IPの制御で任意に決まります。しかし，送信元ホスト指定機能を使用すると，次のコネクション確立要求時の送信元ホストを固定できます。

スケジューラダイレクト機能を使用したRPC

ネームサービスを使用したRPC

リモートAPI機能を使用したRPC

通信先を指定したRPC

TCP/IP通信機能

Client .NET構成定義の<socket>要素のcupSendHost属性を指定することで，CUP.NETの送信元ホストを指定できます。

送信元ホスト指定機能を使用しない場合と使用する場合について，次の図に示します。

図2-19　送信元ホスト指定機能を使用しない場合と使用する場合

2.14　受信ポート固定機能

Client .NETでは，スケジューラダイレクト機能を使用したRPCの受信ポート，およびネームサービスを使用したRPCの受信ポートを固定できます。この機能を，受信ポート固定機能といいます。

この機能は，TP1/ServerからClient .NETへのRPCの応答通信をする場合で，TP1/ServerとClient .NETとの間に設置したファイアウォールでClient .NETの受信ポートにだけ通知を許可するようにフィルタリングしたいときに使用します。

この機能を使用する場合は，Client .NET構成定義の<rpc>要素のcupRecvPort属性を指定します。

受信ポート固定機能を使用しない場合と使用する場合について説明します。

＜この節の構成＞

(1)　受信ポート固定機能を使用しない場合

(2)　受信ポート固定機能を使用する場合

(1)　受信ポート固定機能を使用しない場合

RPCの応答通信で，受信ポートに対するフィルタリングはありません。OSが，Client .NETのRPCの受信ポートとして不定のポートを自動的に割り当てます。

受信ポート固定機能を使用しない場合について，次の図に示します。

図2-20　受信ポート固定機能を使用しない場合（スケジューラダイレクト機能を使用したRPC）

図2-21　受信ポート固定機能を使用しない場合（ネームサービスを使用したRPC）

(2)　受信ポート固定機能を使用する場合

RPCへの応答通信で許可する受信ポートを，Client .NET構成定義の<rpc>要素のcupRecvPort属性で指定したポートとし，それ以外はフィルタリング対象にします。このため，不正なサービス要求に対するTP1/Serverからの応答通信を，ファイアウォールでフィルタリングできます。

受信ポート固定機能を使用する場合について，次の図に示します。

図2-22　受信ポート固定機能を使用する場合（スケジューラダイレクト機能を使用したRPC）

図2-23　受信ポート固定機能を使用する場合（ネームサービスを使用したRPC）

3.　構成定義

この章では，Client .NETで使用する構成定義について説明します。

＜この章の構成＞

構成ファイルの形式

hitachi.opentp1.client

common

profile

tp1Server

rpc

rapService

nameService

scheduleService

extendLevel

errTrace

methodTrace

uapTrace

dataTrace

debugTrace

transaction

tcpip

socket

xarTransaction

定義例

構成ファイルの形式

Client .NET構成定義は，アプリケーション構成ファイル，またはマシン構成ファイルにカスタム構成セクションとして記述します。

カスタム構成セクションの宣言

形式

<configSections>
 <section
   name="hitachi.opentp1.client"
   type="Hitachi.OpenTP1.Common.Util.ProfileSectionHandler,
         Hitachi.OpenTP1.Client,Version=7.0.0.0,Culture=neutral,
         PublicKeyToken=2440cf5f0d80c91c,Custom=null"/>
</configSections>

説明

カスタム構成セクション宣言の<section>要素は，<configSections>要素の子要素として，各アプリケーション構成ファイルに記述するか，マシン構成ファイルに記述します。マシン構成ファイルに記述した場合，各アプリケーション構成ファイルに記述する必要はありません。

カスタム構成セクション宣言は，必ず<hitachi.opentp1.client>要素よりも前に記述してください。

構成定義の記述

形式

<hitachi.opentp1.client>
 <common>
   〔〔<構成定義要素名〔〔属性名="属性値"〕…〕/>〕…〕
 </common>
 〔〔<profile id="プロファイルID">
   〔〔<構成定義要素名〔〔属性名="属性値"…〕…〕/>〕…〕
     </profile>〕…〕
</hitachi.opentp1.client>

説明

<hitachi.opentp1.client>要素の子要素として，<common>要素と<profile>要素が記述できます。<profile>要素は複数記述できます。<common>要素または<profile>要素の子要素として，各構成定義要素が記述できます。

<profile>要素が指定されていない，または指定された<profile>要素内に該当する構成定義要素が記述されていない場合は，<common>要素内に記述された構成定義要素が有効になります。

<common>要素内および<profile>要素内に，同じ構成定義要素が記述されている場合は，<profile>要素内の構成定義要素が有効になります。

<common>要素内または一つの<profile>要素内に，複数定義できない構成定義要素が複数定義されている場合は，最後に記述した構成定義要素が有効になります。

なお，必ず記述しなくてはならない構成定義要素が<common>要素内および<profile>要素内に記述されていない場合は，実行時にエラーが発生します。

引数なしのOpenRpcメソッドを呼び出すか，OpenRpcメソッドの引数でプロファイルIDにnull（Nothing）または空文字列（""）を指定した場合は，<common>要素内に記述された構成定義要素が有効になります。OpenRpcメソッドの引数でプロファイルIDを指定した場合は，該当する<profile>要素内の構成定義要素が有効になります。OpenRpcメソッドを発行しない場合は，構成定義は読み込まれないでデフォルト値が有効になります。

相手先のサーバ別，通信方式別などに<profile>要素を記述しておくと便利です。

外部ファイルでの構成定義の記述

形式

<hitachi.opentp1.client import="絶対パスの外部XMLファイル名">
</hitachi.opentp1.client>

外部ファイルの形式

<hitachi.opentp1.client>
 <common>
   〔〔<構成定義要素名〔〔属性名="属性値"〕…〕/>〕…〕
 </common>
 〔〔<profile id="プロファイルID">
   〔〔<構成定義要素名〔〔属性名="属性値"…〕…〕/>〕…〕
     </profile>〕…〕
</hitachi.opentp1.client>

説明

<hitachi.opentp1.client>要素のimport属性を指定すると，外部ファイルで定義した構成定義を読み込ませることができます。複数のアプリケーションで同じ構成定義を使用したい場合に指定します。

外部ファイルは，カスタム構成セクションの<hitachi.opentp1.client>要素をルート要素とするXMLファイルで指定します。また，import属性には外部ファイルのパスを絶対パスで指定してください。

【外部ファイルの指定例】

c:¥MyApp¥tp1config.xml

注意事項

構成定義要素の属性値として指定するtrueおよびfalseには，大文字と小文字の区別はありません。

hitachi.opentp1.client

形式

<hitachi.opentp1.client>
 <common>
   <構成定義要素名 属性名="属性値"/>
 </common>
 <profile id="プロファイルID">
   <構成定義要素名 属性名="属性値"/>
 </profile>
</hitachi.opentp1.client>

説明

Client .NETの構成ファイルの構成セクション名です。

<hitachi.opentp1.client>要素の子要素として，<common>要素と<profile>要素が指定できます。

<common>要素は省略できません。必ず<hitachi.opentp1.client>要素内に<common>要素を一つだけ指定してください。

<profile>要素は省略できます。

common

形式

<common>
 <構成定義要素名 属性名="属性値"/>
</common>

説明

構成定義要素を指定します。

この要素内では構成定義要素の指定を省略できます。

また，この要素内にだけ指定できる構成定義要素，属性名，および属性値もあります。

この要素は省略できません。

profile

形式

<profile id="プロファイルID">
 <構成定義要素名 属性名="属性値"/>
</profile>

説明

構成定義要素を指定します。

この要素内では構成定義要素の指定を省略できます。

この要素内で指定していない構成定義要素，属性名，および属性値については，<common>要素内で指定した構成定義要素，属性名，および属性値が有効になります。

この要素は省略できます。

属性

●id="プロファイルID"　　～〈文字列〉

プロファイルを一意に識別するためのIDを指定します。

<profile>要素を指定した場合，この属性は省略できません。

tp1Server

形式

<tp1Server host="窓口となるOpenTP1のホスト名"
          port="窓口となるOpenTP1のポート番号"/>

説明

窓口となるOpenTP1のホスト名およびポート番号を指定します。

窓口となるOpenTP1を複数指定する場合は，この要素を複数指定してください。

サービス呼び出し（RPC）をrapリスナー経由で行う場合は，rapリスナーのホスト名，またはファイアウォールのホスト名を指定してください。

この要素は省略できません。必ず<common>要素内または<profile>要素内にこの要素を一つ以上指定してください。

属性

●host="窓口となるOpenTP1のホスト名"　　～〈文字列〉

窓口となるOpenTP1のホスト名を指定します。

この属性は省略できません。

●port="窓口となるOpenTP1のポート番号"　　～〈符号なし整数〉((5001～65535))

窓口となるOpenTP1のポート番号を指定します。

この属性は省略できます。省略した場合，<nameService>要素，<rapService>要素，または<scheduleService>要素のport属性の値が有効になります。

記述例

<tp1Server host="10.210.208.13"
          port="10000"/>
<tp1Server host="10.210.208.14"
          port="10000"/>

rpc

形式

<rpc use="通信形態"
    watchTime="最大応答待ち時間"
    watchTimeNotification="true|false"
    maxMessageSize="RPCメッセージの最大長"
    compressData="true|false"
    prfInfoSend="true|false"
    cupRecvPort="CUP.NETの受信で使用するポート番号"
    useMultiScheduler="true|false"/>

説明

RPCに関する指定をします。

この要素は省略できません。必ず<common>要素内または<profile>要素内にこの要素を一つ以上指定してください。

属性

●use="通信形態"

通信形態を指定します。

この属性は省略できません。次のどれかを指定してください。

rap：rapサービスを使用

nam：ネームサービスを使用

scd：スケジューラサービスを使用

●watchTime="最大応答待ち時間"　　～〈符号なし整数〉((0～65535))《180》（単位：秒）

応答型RPCの場合に，CUP.NETからSPP.NETまたはSPPへサービス要求を送ってからサービスの応答が返るまでの待ち時間の最大値を指定します。

指定時間を過ぎても応答が返らない場合は，CUP.NETにエラーリターンします。0を指定した場合は，応答を受信するまで待ち続けます。

この属性は省略できます。

●watchTimeNotification="true｜false"　　～《false》

CUP.NETの最大応答待ち時間をサーバ側に引き継ぐかどうかを指定します。

CUP.NETの最大応答待ち時間を引き継ぐと，CUP.NETがタイムアウトしているのにサーバ側でサービスが実行されることを防止できます。

この属性は省略できます。

true：サーバ側にCUP.NETの最大応答待ち時間を引き継ぎます。

false：サーバ側にCUP.NETの最大応答待ち時間を引き継ぎません。

●maxMessageSize="RPCメッセージの最大長"　　～〈符号なし整数〉((1～8))《1》（単位：メガバイト）

TP1ClientクラスのCallメソッドで送受信できるユーザメッセージの最大長を指定します。

Callメソッドの引数に，この属性で指定した値より大きな値を送信メッセージ長および受信メッセージ長として指定できません。

送信メッセージ長にこのオペランドの指定値よりも大きい値を指定した場合，Callメソッドは，ErrMessageTooBigExceptionを返し，rpcCallメソッドはErrMessageTooBigExceptionを返します。

送信メッセージ長にこのオペランドの指定値よりも小さい値を指定して，受信メッセージ長にこのオペランドの指定値よりも大きい値を指定した場合，CallメソッドはErrInvalidArgsExceptionを返します。

この属性に1（デフォルト値）または8（最大に拡張した値）を指定した場合，RPCメッセージの最大長は次のようになります。

1（デフォルト値）の場合：1メガバイト＝1048576バイト

8（最大に拡張した値）の場合：8メガバイト＝8388608バイト

この属性に2以上を指定した場合，ネームサービスを使用したRPCでネームサーバへの問い合わせをしたとき，RPCメッセージの最大長が拡張されたサービス情報を，要求先として使用します。

maxMessageSize属性を指定して，次の機能を使用しないでください。使用した場合，通信先のTP1/Serverノードでエラーが発生します。

スケジューラダイレクト機能を使用したRPC

通信先を指定したRPC

なお，システム共通定義のrpc_max_message_sizeオペランドをサポートしているTP1/Server（バージョン06-02以降）のバージョンのTP1/Server Baseにだけ要求できます。

この属性は省略できます。

●compressData="true｜false"　　～《false》

データ圧縮機能を使用するかどうかを指定します。

true：データ圧縮機能を使用します。

false：データ圧縮機能を使用しません。

この属性は省略できます。

●prfInfoSend="true｜false"　　～《true》

TP1/Serverに対して，ネームサービスを使用したRPC，およびスケジューラダイレクト機能を使用したRPCを行う場合に，OpenTP1の性能検証用トレースに出力する情報としてClient .NET内部で識別情報を付加するかどうかを指定します。

スケジューラダイレクト機能を使用したRPCでサービス要求先のTP1/Serverのバージョンが03-03未満である場合は，SPPのサービス関数に不正なデータを渡す可能性があるので必ずfalseを指定してください。

なお，ネームサービス機能を使用したRPCでサービス要求先のTP1/Serverのバージョンが03-03未満である場合，trueを指定しても，この指定は無視されるためTP1/Server上へ性能検証用の識別情報は伝播できません。

true：Client .NET内部で識別情報（IPアドレスなど）を付加します。

false：Client .NET内部で識別情報（IPアドレスなど）を付加しません。

この属性は省略できます。

●cupRecvPort="CUP.NETの受信で使用するポート番号"　　～〈符号なし整数〉((5001～65535))

サーバからのメッセージを受信するCUP.NETのポート番号を指定します。

この属性で指定したポート番号は，次の機能を使用する場合に有効です。

スケジューラダイレクト機能を使用したRPCの受信時（受信ポート）

ネームサービスを使用したRPCの受信時（受信ポート）

この属性を省略すると，システムが任意に割り当てたポート番号を使用します。

同一マシン内で，複数のプロセス，または複数のスレッドを同時に実行する場合は，それぞれ異なるポート番号を指定してください。

指定できるポート番号でも，OSまたはほかのプログラムで使用するポート番号は指定しないでください。指定した場合，応答データを正しく受信できないことがあります。なお，OSが使用するポート番号は，OSごとに異なります。OSが使用するポート番号については，ご利用のOSの関連ドキュメントを参照してください。

●useMultiScheduler="true｜false"　　～《false》

マルチスケジューラ機能を使用するかどうかを指定します。

true：マルチスケジューラ機能を使用します。

false：マルチスケジューラ機能を使用しません。

マルチスケジューラ機能を使用すると，複数起動されたマルチスケジューラデーモンの中から，一つをランダムに選択することで，スケジューリングの負荷を軽減できます。この属性にtrueを指定した場合，サービス要求を送信するスケジューラデーモンはClient .NET構成定義の指定によって異なります。次のClient .NET構成定義も併せて参照してください。

<rpc>要素のuse属性

<tp1Server>要素のport属性

<scheduleService>要素のport属性

<scheduleService>要素のmultiSchedulerCount属性

この属性は，CallToメソッド実行時は無効です。

この属性は省略できます。

記述例

<rpc use="nam"
    watchTime="180"
    watchTimeNotification="false"
    maxMessageSize="1"
    compressData="false"
    prfInfoSend="true"
    cupRecvPort="6000"
    useMultiScheduler="false"/>

rapService

形式

<rapService port="rapリスナーのポート番号"
           autoConnect="true|false"
           delay="最大通信遅延時間"
           watchTimeInheritance="true|false"
           inquireTime="問い合わせ間隔最大時間"
           randomSelect="true|false"
           connectInformation="端末識別情報"/>

説明

rapサービスを使用したRPCに関する指定をします。

<rpc>要素のuse属性でrapを指定した場合，この要素は省略できません。その場合，必ず<common>要素内または<profile>要素内にこの要素を一つ以上指定してください。

属性

●port="rapリスナーのポート番号"　　～〈符号なし整数〉((5001～65535))

クライアントが属しているOpenTP1のrapリスナーのポート番号またはファイアウォールのポート番号を指定します。

<tp1Server>要素のport属性が省略された場合，この属性の値が有効になります。

この属性は省略できます。省略する場合，必ず<tp1Server>要素のport属性の値を指定してください。

●autoConnect="true｜false"　　～《false》

CUP.NETとOpenTP1のrapサーバとの間の常設コネクションを自動的に確立させるかどうかを指定します。

この属性は省略できます。

true：次回メソッド実行時に，常設コネクションが確立されていない場合は，自動的に常設コネクションを確立します。常設コネクション確立要求先は，<tp1Server>要素のhost属性に指定したrapリスナーです。

false：常設コネクションを自動的に確立させません。

●delay="最大通信遅延時間"　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

CUP.NETとOpenTP1のrapサーバとの間の通信オーバヘッドを考慮し，rapサーバ側の応答監視をクライアント側よりも早く終わらせる場合に指定します。この属性を指定すると，rapサーバ側の監視を指定した時間分だけ早く終了させ，クライアント側の監視時間のタイムアウトによるメッセージのすれ違いを防ぎます。

Client .NETの<rpc>要素のwatchTime属性に0を指定した場合，またはSetDcwatchtimメソッドで0を指定した場合は，<rapService>要素のdelay属性に指定した値は無視されます。<rpc>要素のwatchTime属性に指定した値から<rapService>要素のdelay属性に指定した値を引いたときに，0または負の値になった場合も，<rapService>要素のdelay属性に指定した値は無視され，1が仮定されます。

●watchTimeInheritance="true｜false"　　～《false》

rapサービスを使用したRPCを行う場合に，CUP.NETの最大応答待ち時間をrapサーバ側に引き継ぐかどうかを指定します。

この属性は省略できます。

true：rapサーバ側にCUP.NETの最大応答待ち時間を引き継ぎます。

false：rapサーバ側にCUP.NETの最大応答待ち時間を引き継ぎません。

●inquireTime="問い合わせ間隔最大時間"　　～〈符号なし整数〉((0～1048575))（単位：秒）

CUP.NETがサーバに対して問い合わせを行ってから，次の問い合わせをするまでの間隔の最大時間を指定します。問い合わせ間隔最大時間は，CUP.NET実行プロセスまたはrapサーバで監視するタイマです。指定時間を超えても問い合わせがない場合，CUP.NET実行プロセス側またはrapサーバ側で強制的に常設コネクションを解放します。

この属性の値に0を指定した場合は，CUP.NETが問い合わせをするまで待ち続けます。

この属性は省略できます。省略した場合，TP1/Server側で指定された値が有効になります。

●randomSelect="true｜false"　　～《false》

窓口となるTP1/Serverをランダムに選択するかどうかを指定します。

この属性は，窓口となるTP1/Serverを複数指定した場合にだけ有効です。

この属性は省略できます。

true：窓口となるTP1/Serverをランダムに選択します。

false：窓口となるTP1/Serverをランダムに選択しません。

●connectInformation="端末識別情報"

端末識別情報として，DCCM3論理端末の論理端末名称をEBCDIKコードで指定します。端末識別情報は，先頭に0xを付け，0xの後ろに128文字までの16進数表記で指定します。先頭の0xは128文字に含まれません。2文字で1バイトの値として，64バイト（128文字）まで指定できます。ただし，DCCM3側では先頭8バイト目までに指定した値だけが有効になるため，9バイト目以降に指定された値は無視されます。

この属性に指定した値は，SetConnectInformationメソッドを呼び出すことで，動的に変更できます。この属性に指定した値は，SetConnectInformationメソッドを呼び出したあと，再びOpenRpcメソッドを呼び出すまで無視されます。

この属性は，Client .NET構成定義の<tp1Server>要素のhost属性にDCCM3論理端末のホスト名を，<tp1Server>要素のport属性または<rapService>要素のport属性にDCCM3論理端末のポート番号を指定し，次のどちらかの方法でDCCM3論理端末との常設コネクションを確立した場合に有効となります。

OpenConnectionメソッドを呼び出します。引数有りのOpenConnectionメソッドの場合，引数hostにDCCM3論理端末のホスト名，引数portにDCCM3論理端末のポート番号を指定します。

Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定し，Callメソッドを呼び出します。

この属性は省略できます。省略した場合，DCCM3論理端末に端末識別情報を通知しません。ただし，SetConnectInformationメソッドを呼び出した場合は，SetConnectInformationメソッドに指定した端末識別情報が，DCCM3論理端末との常設コネクション確立時にDCCM3論理端末に通知されます。

記述例

<rapService port="10020"
           autoConnect="false"
           delay="0"
           watchTimeInheritance="false"
           inquireTime="100"
           connectInformation="0xC1C2F0F1"/>

nameService

形式

<nameService port="ネームサービスのポート番号"
            cacheCapacity="ネームキャッシュの最大エントリ数"
            randomSelect="true|false"
            loadBalance="true|false"
            cacheTime="キャッシュの有効期限
            multiHomedHost="true|false"/>

説明

ネームサービスを使用したRPCに関する指定をします。

<rpc>要素のuse属性でnamを指定した場合，この要素は省略できません。その場合，必ず<common>要素内または<profile>要素内にこの要素を一つ以上指定してください。

属性

●port="ネームサービスのポート番号"　　～〈符号なし整数〉((5001～65535))《10000》

クライアントが属しているOpenTP1のシステム共通定義のname_portオペランドで指定したネームサービスのポート番号を指定します。

<tp1Server>要素のport属性が省略された場合，この属性の値が有効になります。

この属性は省略できます。省略する場合，必ず<tp1Server>要素のport属性の値を指定してください。

●cacheCapacity="ネームキャッシュの最大エントリ数"　　～〈符号なし整数〉((2～256))《8》

Client .NETで使用するサービス情報をキャッシュするためのキャッシュの最大エントリ数を指定します。

キャッシュのエントリはLRU方式で管理します。キャッシュのエントリ数が指定値を超える場合は，最も過去に呼び出されたサービス情報を削除します。

この属性は省略できます。

●randomSelect="true｜false"　　～《false》

窓口となるTP1/Serverをランダムに選択するかどうかを指定します。

この属性は，窓口となるTP1/Serverを複数指定した場合にだけ有効です。

この属性は省略できます。

true：窓口となるTP1/Serverをランダムに選択します。

false：窓口となるTP1/Serverをランダムに選択しません。

●loadBalance="true｜false"　　～《false》

ネームサーバから得た複数のサービス要求先スケジューラの情報から，負荷レベルが最も低いサービス要求先スケジューラの情報をキャッシュに格納するかどうかを指定します。

true：負荷レベルが最も低いサービス要求先スケジューラの情報をキャッシュに格納します。

false：負荷レベルが最も低いサービス要求先スケジューラの情報をキャッシュに格納しません。

trueを指定した場合の処理を説明します。

キャッシュに格納されたサービス要求先スケジューラが複数ある場合，最初のサービス要求先スケジューラは，ランダムに選択されます。RPCでのサービス要求が2度目以降の場合，キャッシュに格納されたサービス要求先スケジューラが，ラウンドロビン方式で選択されます。

負荷レベルの詳細については，マニュアル「OpenTP1 解説」を参照してください。

この属性は省略できます。

●cacheTime="キャッシュの有効期限"　　～〈符号なし整数〉((0～65535))《30》（単位：秒）

サービス要求先スケジューラの情報をキャッシュに格納した時点からの，キャッシュの有効期限を指定します。キャッシュの有効期限を満了したサービス要求先スケジューラの情報は，キャッシュから削除されます。その後，サービス要求先スケジューラの情報を再度取得して，その情報をキャッシュに格納することで，キャッシュを更新します。0を指定した場合は，キャッシュの有効期限は無しになります。

この属性は，<nameService>要素のloadBalance属性でtrueを指定したときだけ有効です。

この属性は省略できます。

●multiHomedHost="true｜false"　　～《false》

マルチホームドホスト形態のTP1/Serverに対してネームサービスを使用したRPCを行うかどうかを指定します。

true：マルチホームドホスト形態のTP1/Serverに対してネームサービスを使用したRPCを行います。RPCの要求先を複数定義している場合，またはマルチホームドホスト形態のTP1/Serverが一つ以上ある場合に指定してください。

false：マルチホームドホスト形態のTP1/Serverに対してネームサービスを使用したRPCを行いません。マルチホームドホスト形態のTP1/Serverに対してネームサービスを使用したRPCを行うと，エラーが発生する場合があります。

詳細については，「2.1.4(2)(c)　マルチホームドホスト形態のTP1/Serverに対してRPCを行う場合の定義」を参照してください。

この属性は省略できます。

記述例

<nameService port="10000"
            cacheCapacity="8"
            randomSelect="false"
            loadBalance="true"
            cacheTime="30"
            multiHomedHost="true"/>

scheduleService

形式

<scheduleService port="スケジュールサービスのポート番号"
                usePriority="true|false"
                randomSelect="true|false"
                hostChange="true|false"
                multiSchedulerCount
                ="スケジューラデーモンのプロセス数"/>

説明

スケジュールサービスを使用したRPCに関する指定をします。

<rpc>要素のuse属性でscdを指定した場合，この要素は省略できません。その場合，必ず<common>要素内または<profile>要素内にこの要素を一つ以上指定してください。

属性

●port="スケジュールサービスのポート番号"　　～〈符号なし整数〉((5001～65535))

スケジュールサービスのポート番号を指定します。<tp1Server>要素のport属性が省略された場合，この属性の値が有効になります。

Client.NET構成定義の<rpc>要素use属性にscdを指定し，かつ<rpc>要素useMultiScheduler属性にtrueを指定した場合は，マルチスケジューラデーモンのポート番号を指定します。マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合は，マスタスケジューラデーモン（スケジュールサービス）のポート番号を指定することもできます。

この属性は省略できます。省略する場合，必ず<tp1Server>要素のport属性の値を指定してください。

なお，通信相手のTP1/Serverは，スケジュールサービスまたはマルチスケジューラデーモンを，この定義で指定したポート番号で起動する必要があります。TP1/Serverのスケジュールサービスまたはマルチスケジューラデーモンの指定については，マニュアル「OpenTP1 システム定義」を参照してください。

●usePriority="true｜false"　　～《false》

サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散するかどうか指定します。

この属性は省略できます。

true：サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散します。

false：サービス要求を受け付けた窓口となるTP1/Serverを優先しません。TP1/Serverは，ノード間の負荷を分散します。

●randomSelect="true｜false"　　～《false》

窓口となるTP1/Serverをランダムに選択するかどうかを指定します。

この属性は，窓口となるTP1/Serverを複数指定した場合にだけ有効です。

この属性は省略できます。

true：窓口となるTP1/Serverをランダムに選択します。

false：窓口となるTP1/Serverをランダムに選択しません。

●hostChange="true｜false"　　～《false》

<tp1Server>要素に指定したサービス要求先スケジューラをRPCごとに分散させるかどうかを指定します。

RPCでのサービス要求が1度目の場合，<scheduleService>要素のrandomSelect属性にfalseを指定したとき，<tp1Server>要素で指定した先頭のサービス要求先スケジューラが選択されます。<scheduleService>要素のrandomSelect属性にtrueを指定したとき，<tp1Server>要素で指定したサービス要求先スケジューラがランダムに選択されます。

RPCでのサービス要求が2度目以降の場合，前回のサービス要求先スケジューラから<tp1Server>要素で指定した順にラウンドロビン方式でサービス要求先スケジューラが選択されます。

この属性は省略できます。

true：サービス要求先スケジューラをRPCごとに分散させます。

false：サービス要求先スケジューラをRPCごとに分散させません。

●multiSchedulerCount="スケジューラデーモンのプロセス数"　　～〈符号なし整数〉((1～4096))《1》

スケジューラデーモンのプロセス数を指定します。スケジュールサービス定義のscdmulti定義コマンドの-mオプションに指定したプロセス数か，またはそれ以下の値を指定します。

この属性に指定するプロセス数は，<tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定するポート番号によって，次のように異なります。

表3-1　Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定するプロセス数の違い

<tp1Server>要素のport属性，または<scheduleService>要素のport属性の指定値 | <scheduleService>要素のmultiSchedulerCount属性の指定値
マルチスケジューラデーモンのベースとなるポート番号 | マルチスケジューラデーモンのプロセス数と同じ値，またはそれ以下の値を指定します。
マルチスケジューラデーモンの任意のポート番号 | 「マルチスケジューラデーモンのポート番号の最大 - <tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定したポート番号 + 1」の値，またはそれ以下の値を指定します。
マスタスケジューラデーモンのポート番号 | マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合 | 「マルチスケジューラデーモンのプロセス数 + 1」の値，またはそれ以下の値を指定します。
上記以外 | 1を指定するか，または指定を省略します（マルチスケジューラデーモンは使用できません）。

この定義は，Client.NET構成定義の<rpc>要素のuse属性にscdを指定し，かつ<rpc>要素のuseMultiScheduler属性にtrueを指定した場合に有効です。この場合，ポート番号は，次に示す範囲の値からランダムに選択します。

下限値：Client .NET構成定義の<tp1Server>要素のport属性，または<scheduleService>要素のport属性に指定したポート番号の値

上限値：下限値 + Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定したプロセス数 - 1

この属性は省略できます。

記述例

<scheduleService port="10010"
                usePriority="false"
                hostChange="false"
                multiSchedulerCount="10"/>

extendLevel

形式

<extendLevel value="00000000|00000001"/>

説明

Client .NETの機能拡張レベルの設定を指定します。

この要素は省略できます。

属性

●value="00000000｜00000001"　　～《00000000》

Client .NETの機能拡張レベルの設定を指定します。

この属性は省略できます。

00000000：Client .NETの機能を拡張しません。

00000001：Callメソッドを呼び出したとき，自CUP.NETのIPアドレスをサービスに連絡します。呼び出したサービスでRpcクラスのGetCallersAddressメソッドまたはdc_rpc_get_callers_addressメソッドを実行し，CUP.NETのアドレスを求める必要がある場合に指定します。

記述例

<extendLevel value="00000000"/>

errTrace

形式

<errTrace use="true|false"
         path="エラートレースファイル作成ディレクトリ"
         fileSize="エラートレースファイルサイズ"/>

説明

CUP.NETでのエラートレース取得に関する指定をします。

この要素は省略できます。

属性

●use="true｜false"　　～《false》

CUP.NETでエラートレースを取得するかどうかを指定します。

この属性は省略できます。

true：エラートレースを取得します。

false：エラートレースを取得しません。

●path="エラートレースファイル作成ディレクトリ"　　～〈文字列〉

エラートレースファイルを作成するディレクトリのパス名を指定します。

<errTrace>要素のuse属性にtrueを指定した場合，必ず指定してください。

●fileSize="エラートレースファイルサイズ"　　～〈符号なし整数〉((4096～1048576))《4096》（単位：バイト）

エラートレースファイルのサイズを指定します。

この属性は省略できます。

記述例

<errTrace use="true"
         path="c:¥temp¥clientn"
         fileSize="10000"/>

methodTrace

形式

<methodTrace use="true|false"
            path="メソッドトレースファイル作成ディレクトリ"
            fileSize="メソッドトレースファイルサイズ"/>

説明

CUP.NETでのメソッドトレース取得に関する指定をします。

この要素は省略できます。

属性

●use="true｜false"　　～《false》

CUP.NETでメソッドトレースを取得するかどうかを指定します。

この属性は省略できます。

true：メソッドトレースを取得します。

false：メソッドトレースを取得しません。

●path="メソッドトレースファイル作成ディレクトリ"　　～〈文字列〉

メソッドトレースファイルを作成するディレクトリのパス名を指定します。

<methodTrace>要素のuse属性にtrueを指定した場合，必ず指定してください。

●fileSize="メソッドトレースファイルサイズ"　　～〈符号なし整数〉((4096～1048576))《4096》（単位：バイト）

メソッドトレースファイルのサイズを指定します。

この属性は省略できます。

記述例

<methodTrace use="true"
            path="c:¥temp¥clientn"
            fileSize="10000"/>

uapTrace

形式

<uapTrace use="true|false"
         path="UAPトレースファイル作成ディレクトリ"
         fileSize="UAPトレースファイルサイズ"/>

説明

CUP.NETでのUAPトレース取得に関する指定をします。

この要素は省略できます。

属性

●use="true｜false"　　～《false》

CUP.NETでUAPトレースを取得するかどうかを指定します。

この属性は省略できます。

true：UAPトレースを取得します。

false：UAPトレースを取得しません。

●path="UAPトレースファイル作成ディレクトリ"　　～〈文字列〉

UAPトレースファイルを作成するディレクトリのパス名を指定します。

<uapTrace>要素のuse属性にtrueを指定した場合，必ず指定してください。

●fileSize="UAPトレースファイルサイズ"　　～〈符号なし整数〉((4096～1048576))《4096》（単位：バイト）

UAPトレースファイルのサイズを指定します。

この属性は省略できます。

記述例

<uapTrace use="true"
         path="c:¥temp¥clientn"
         fileSize="10000"/>

dataTrace

形式

<dataTrace use="true|false"
          path="データトレースファイル作成ディレクトリ
          fileSize="データトレースファイルサイズ"
          maxDataSize="データトレースの最大データ長"/>

説明

CUP.NETでのデータトレース取得に関する指定をします。

この要素は省略できます。

属性

●use="true｜false"　　～《false》

CUP.NETでデータトレースを取得するかどうかを指定します。

この属性は省略できます。

true：データトレースを取得します。

false：データトレースを取得しません。

●path="データトレースファイル作成ディレクトリ"　　～〈文字列〉

データトレースファイルを作成するディレクトリのパス名を指定します。

<dataTrace>要素のuse属性にtrueを指定した場合，必ず指定してください。

●fileSize="データトレースファイルサイズ"　　～〈符号なし整数〉((4096～1048576))《4096》（単位：バイト）

データトレースファイルのサイズを指定します。

この属性は省略できます。

●maxDataSize="データトレースの最大データ長"　　～〈符号なし整数〉((16～1048576))《128》（単位：バイト）

一つのデータトレースのデータ長の最大値を指定します。

この属性は省略できます。

記述例

<dataTrace use="true"
          path="c:¥temp¥clientn"
          fileSize="10000"
          maxDataSize="128"/>

debugTrace

形式

<debugTrace path="デバッグトレースファイル作成ディレクトリ"
           fileCount="デバッグトレース最大ファイル数"/>

説明

CUP.NETでのデバッグトレース取得に関する指定をします。

この要素は省略できます。

また，この要素は<common>要素内でだけ有効です。

属性

●path="デバッグトレースファイル作成ディレクトリ"

デバッグトレースファイルを作成するディレクトリのパス名を指定します。

この属性は省略できます。省略した場合，次のディレクトリに作成されます。

〈アプリケーション実行ユーザのアプリケーションデータディレクトリ〉¥Hitachi¥OpenTP1¥TP1ClientNET

【アプリケーションデータディレクトリの例】

C:¥Document and Settings¥〈ユーザ名〉¥Application Data

【アプリケーションデータディレクトリの例（Windowsサービスの場合）】

C:¥Document and Settings¥LocalService¥Application Data

●fileCount="デバッグトレース最大ファイル数"　　～〈符号なし整数〉((0～256))《32》

デバッグトレースの最大ファイル数を指定します。0を指定した場合，最大ファイル数の制限はなくなります。最大ファイル数を超えた場合，ファイル作成日付の最も古いファイルが削除されます。

同じデバッグトレース作成ディレクトリに対して異なる最大ファイル数を指定した場合，最大ファイル数は保証されません。

この属性の指定が不正の場合，エラーは通知されません。その場合，属性の値はデフォルト値が有効になります。

この属性は省略できます。

記述例

<debugTrace path="c:¥temp¥clientn"
           fileCount="10"/>

transaction

形式

<transaction internalWatchTime
            ="トランザクション同期点処理時の最大通信待ち時間"
            rollbackInfo="no|self|remote|all"
            limitTime="トランザクションブランチ最大実行可能時間"
            recoveryType="type1|type2|type3"
            expireTime="トランザクションブランチ限界経過時間"
            cpuTime="トランザクションブランチCPU監視時間"
            expireSuspend="all|async|none"
            statistics="統計情報項目"
            optimize="トランザクション最適化項目"
            rollbackResponse="true|false"
            completionLimitTime="トランザクション完了限界時間"/>

説明

CUP.NETからトランザクションを開始する場合に指定します。

この要素は省略できます。

属性

●internalWatchTime="トランザクション同期点処理時の最大通信待ち時間"　　～〈符号なし整数〉((1～65535))（単位：秒）

トランザクションの同期点処理で，トランザクションブランチ間で行う通信（プリペア，コミット，ロールバック指示，応答など）の受信待ち時間の最大値を指定します。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_watch_timeオペランドの指定に従います。

●rollbackInfo="no｜self｜remote｜all"

トランザクションブランチがロールバックした場合に，ロールバック要因に関する情報をログに取得するかどうかを指定します。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_rollback_information_putオペランドの指定に従います。

no：ロールバック情報を取得しません。

self：ロールバック要因が発生したトランザクションブランチでだけ，ログにロールバック情報を取得します。

remote：selfに加え，他ノードのトランザクションブランチからロールバック要求されたトランザクションブランチでも，ログにロールバック情報を取得します。

all：remoteに加え，自ノードのトランザクションブランチからロールバック要求されたトランザクションブランチでも，ログにロールバック情報を取得します。

●limitTime="トランザクションブランチ最大実行可能時間"　　～〈符号なし整数〉((0～65535))（単位：秒）

トランザクションブランチの最大実行可能時間を指定します。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_limit_timeオペランドの指定に従います。

●recoveryType="type1｜type2｜type3"

RPCがタイムアウトし，RPC発行先プロセスのアドレスが未解決の場合やトランザクション実行中のUAPがダウンした場合に，トランザクションブランチ間の連絡がスムーズにできないで，トランザクションの決着に時間が掛かることがあります。

この属性では，次に示す障害が発生した場合のトランザクション同期点処理方式を，指定値に示す三つの方式から選択して指定します。

（障害1）RPCがタイムアウトした場合

この場合，RPC発行元トランザクションブランチは，サービス要求がどのプロセスで実行されているかがわからないため，RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信できないで，RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチがトランザクション同期点メッセージ待ちとなり，トランザクションの決着に時間が掛かります。

（障害2）RPC発行元UAPがRPCの応答受信前にダウンした場合

この場合，RPC発行元トランザクションブランチは，サービス要求がどのプロセスで実行されているかがわからないため，RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信できないで，RPC発行先トランザクションブランチはトランザクション同期点メッセージ待ちとなり，トランザクションの決着に時間が掛かります。

（障害3）RPC発行先UAPからの応答受信後にRPC発行元UAPとRPC発行先UAPがほぼ同時にダウンした場合

この場合，それぞれのトランザクションブランチを引き継いだトランザクション回復プロセスは，相手UAPプロセスのダウンを知らないため，すでに存在しないUAPプロセスにトランザクション同期点メッセージを送信してしまい，トランザクションの決着に時間が掛かることがあります。

type1

（障害1）が発生した場合，RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは，トランザクション同期点メッセージ受信処理がタイムアウトすることによって，トランザクションを決着します。

（障害2）が発生した場合，RPC発行元トランザクションブランチは，RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信しないでトランザクションを決着します。RPC発行先トランザクションブランチは，トランザクション同期点メッセージ受信処理がタイムアウトすることによって，トランザクションを決着します。

（障害3）が発生した場合，RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは，トランザクション同期点メッセージ受信処理がタイムアウトすることによって，トランザクションを決着します。

type2

（障害1）が発生してトランザクションをコミットする場合はtype1と同じです。

（障害1）が発生してトランザクションをロールバックする場合，または（障害2）が発生した場合は，RPC発行元トランザクションブランチは，RPC発行先トランザクションブランチが存在するノードのトランザクションサービスプロセスにトランザクション同期点メッセージを送信後，トランザクションを決着します。トランザクション同期点メッセージを受信したトランザクションサービスプロセスは，該当するトランザクションブランチを処理中のプロセスに，トランザクション同期点指示を送信します。

（障害3）が発生した場合，RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは，トランザクション同期点メッセージ受信処理がタイムアウトすることによって，トランザクションを決着します。

type3

（障害1）が発生してトランザクションをコミットする場合は，type1と同じです。

（障害1）が発生してトランザクションをロールバックする場合，（障害2）が発生した場合，または（障害3）が発生した場合，相手トランザクションブランチが存在するノードのトランザクションサービスプロセスに，トランザクション同期点メッセージを送信後，トランザクションを決着します。トランザクション同期点メッセージを受信したトランザクションサービスプロセスは，該当するトランザクションブランチを処理中のプロセスに，トランザクション同期点指示を送信します。

次に示す場合，このオペランドにtype2またはtype3を指定しても，トランザクションの決着に時間が掛かることがあります。

RPC実行中に，RPC発行先UAPの状態が変更となり(負荷増加，UAP終了，UAP閉塞など)，ほかのノードの同一UAPにサービス要求が再転送された場合

相手先のOpenTP1がこのオプションをサポートしていないバージョンの場合

相手先トランザクションブランチがトランザクション同期点メッセージ受信処理以外で時間が掛かっている場合

なお，このオペランドは，ユーザサービス定義またはrapリスナーサービス定義，およびユーザサービスデフォルト定義でも指定できます。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_partial_recovery_typeオペランドの指定に従います。

●expireTime="トランザクションブランチ限界経過時間"　　～〈符号なし整数〉((0～65535))（単位：秒）

トランザクションブランチの処理時間の最大値を指定します。指定時間を超えてもトランザクションブランチが完了しない場合は，そのトランザクションブランチのプロセスを異常終了させてロールバックします。

0を指定した場合，時間監視をしません。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_expiration_timeオペランドの指定に従います。

●cpuTime="トランザクションブランチCPU監視時間"　　～〈符号なし整数〉((0～65535))（単位：秒）

トランザクションブランチが同期点処理までに使用できるCPU時間を指定します。

0を指定した場合，CPU時間を監視しません。

指定時間を超えた場合は，そのトランザクションブランチのプロセスを異常終了させてロールバックします。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_cpu_timeオペランドの指定に従います。

●expireSuspend="all｜async｜none"

トランザクションブランチの処理を監視するとき，次の処理時間も監視時間に含むかどうかを指定します。

監視対象のトランザクションブランチが，RPC機能を使用してほかのトランザクションブランチを呼び出し，その処理が終わるのを待つ時間

連鎖RPCで呼び出されたサーバUAPが次のサービス要求を待つ時間

監視対象のトランザクションブランチが，非同期型RPCを使用してほかのトランザクションブランチを呼び出したあと，処理結果受信処理をしている時間

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_expiration_time_suspendオペランドの指定に従います。

all：1，2，3すべてを監視時間に含みます。

async：3だけを監視時間に含みます。

none：1，2，3のどれも監視時間に含みません。

●statistics="統計情報項目"

トランザクションブランチの統計情報を取得する項目を，次の文字列で指定します。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_statistics_itemオペランドの指定に従います。

また，統計情報項目は複数指定できます。複数指定するときは，コンマ（,）で区切って指定します。

nothing：統計情報を取得しません。

base：基本情報として，次の情報を取得します。

トランザクションブランチの識別子

トランザクションブランチの決着結果

トランザクションブランチの実行プロセス種別

トランザクションブランチの実行サーバ名

トランザクションブランチの実行サービス名

executiontime

基本情報とトランザクションブランチの実行時間情報を取得します。

cputime

基本情報とトランザクションブランチのCPU時間情報を取得します。

●optimize="トランザクション最適化項目"

複数のユーザサーバで構成されるグローバルトランザクションの性能を向上させるための最適化項目を，次の文字列で指定します。CUP.NETからトランザクションを開始する場合にだけ有効です。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_optimum_itemオペランドの指定に従います。

また，最適化項目は複数指定できます。複数指定するときは，コンマ（,）で区切って指定します。

base

同期点取得処理全体（プリペア処理，コミット処理，およびロールバック処理）を最適化します。OpenTP1のトランザクション制御は2相コミット方式で実行しているため，二つのトランザクションブランチ間のコミット制御には，4回のプロセス間通信が必要となります。

次の条件をすべて満たす場合，親トランザクションブランチが子トランザクションブランチのコミット処理を代わりに実行することで，コミット制御で必要な4回のプロセス間通信を削減します。

親トランザクションブランチと子トランザクションブランチが同一OpenTP1下にあること。

親トランザクションブランチが子トランザクションブランチを同期応答型RPCで呼び出していること。

子トランザクションブランチでアクセスしたリソースマネジャのXAインタフェース用オブジェクトが，親トランザクションブランチにもリンケージされていること。

asyncprepare

baseの指定条件を満たしていないため同期点取得処理全体の最適化ができない場合に，プリペア処理を最適化します。

次の条件をすべて満たす場合，親トランザクションブランチから発行されたRPCによって子トランザクションブランチがサービス要求を実行したときに，RPCが返される前にプリペア処理を実行することで，2回のプロセス間通信を削減します。

baseを指定した最適化ができないこと。

親トランザクションブランチが，子トランザクションブランチを同期応答型RPCで呼び出していること。

●rollbackResponse="true｜false"

RPC発行先トランザクションブランチにロールバック指示を送信したあと，ロールバック完了通知を受信するかどうかを指定します。CUP.NETからトランザクションを開始する場合にだけ有効です。

この属性は省略できます。省略した場合，クライアントが属しているOpenTP1のrapリスナーサービス定義のtrn_rollback_response_receiveオペランドの指定に従います。

true：ロールバック完了通知を受信します。

false：ロールバック完了通知を受信しません。

falseを指定した場合，RPC発行先トランザクションブランチからのロールバック完了通知を受信しないで（RPC発行先トランザクションブランチのロールバック処理の完了を待たないで）自トランザクションブランチを終了します。

●completionLimitTime="トランザクション完了限界時間"　　～〈符号なし整数〉((0～65535))（単位：秒）

rapサーバで代理実行するトランザクションブランチの開始から終了までの最大実行時間を指定します。指定時間を超えた場合，rapサーバのプロセスが異常終了したあとに，トランザクションブランチが回復プロセスによってコミット，またはロールバックのどちらかに決着して終了します。

0を指定した場合は，トランザクションブランチの最大実行時間を監視しません。

この指定を省略した場合は，rapリスナーサービス定義のtrn_completion_limit_timeオペランドの指定に従います。

この属性は省略できます。

記述例

<transaction internalWatchTime="180"
            rollbackInfo="all"
            limitTime="0"
            recoveryType="type1"
            expireTime="0"
            cpuTime="0"
            expireSuspend="all"
            statistics="base"
            optimize="base"
            rollbackResponse="false"
            completionLimitTime="0"/>

tcpip

形式

<tcpip use="true|false"
      type="send|recv|sendrecv"
      sendHost="ノードのホスト名"
      sendPort="MHPのポート番号"
      recvPort="CUP.NETのポート番号"
      openPortAtRecv="true|false"/>

説明

TCP/IP通信機能に関する指定をします。

この要素は省略できます。

属性

●use="true｜false"　　～《false》

TCP/IP通信機能を使用するかどうかを指定します。

この属性は省略できます。

true：TCP/IP通信機能を使用します。

false：TCP/IP通信機能を使用しません。

●type="send｜recv｜sendrecv"

TCP/IP通信機能を使用する場合に，初期化する環境を指定します。

<tcpip>要素のuse属性にtrueを指定した場合，この属性は省略できません。その場合，次のどれかを指定してください。

send：メッセージを一方送信するための環境

recv：メッセージを一方受信するための環境

sendrecv：メッセージを送受信するための環境

●sendHost="ノードのホスト名"　　～〈文字列〉

CUP.NETからメッセージを送信する場合，コネクションを確立して接続するMHPが存在するノードのホスト名を指定します。また，ホスト名として10進ドット記法のIPアドレスも指定できます。

この属性は省略できます。

●sendPort="MHPのポート番号"　　～〈符号なし整数〉((1～65535))《12000》

CUP.NETからメッセージを送信する場合，コネクションを確立して接続するMHPのポート番号を指定します。<nameService>要素のport属性で指定するポート番号と重複しないように指定してください。

この属性は省略できます。

●recvPort="CUP.NETのポート番号"　　～〈符号なし整数〉((1～65535))《11000》

MHPから送信されるメッセージを受信するCUP.NETのポート番号を指定します。MHPがメッセージを送信するために使用するポート番号と同じ値を指定してください。

同一マシン内で，複数のプロセス，またはスレッドを同時に実行する場合は，それぞれ異なるポート番号を指定してください。

この属性は省略できます。

●openPortAtRecv="true|false"　　～《false》

TCP/IP通信機能では1コネクションで送受信をする場合に，受信用ソケットを開設する契機（送信相手からの接続を待ち受け始める契機）を指定します。

この属性は省略できます。省略した場合，OpenRpcメソッド実行時に受信用ソケットを開設します。

true：Receiveメソッド実行時にコネクションが確立されていない場合，受信用ソケットを開設します。

false：OpenRpcメソッド実行時に受信用ソケットを開設します。

記述例

<tcpip use="true"
      type="sendrecv"
      sendHost="10.210.208.13"
      sendPort="12000"/>

socket

形式

<socket connectTimeout="コネクション確立最大監視時間"
       cupSendHost="送信元ホスト"/>

説明

コネクション確立に対する最大監視時間を指定します。

この要素は省略できます。

属性

●connectTimeout="コネクション確立最大監視時間"　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

コネクション確立に対する最大監視時間を指定します。

この属性で指定する値は，Client .NETが提供するメソッドで実行されるコネクションの確立処理に掛かる最大監視時間です。なお，Client .NET構成定義の<rpc>要素のwatchTime属性やメソッド引数などで監視するメソッドの処理時間は，この属性で指定する値よりも大きな値を指定してください。この属性で指定した値より小さな値を指定した場合，コネクション確立でタイムアウトが発生したときにメソッドがリターンするまでに掛かる時間は，この属性で指定した時間となるので注意してください。

相手システムが未起動であるなどの要因でコネクションを確立できない場合，この属性で指定した監視時間が経過する前にCUP.NETから発行したメソッドがエラーリターンすることがあります。これは，この属性で指定した最大監視時間よりも，OSによるコネクション確立処理の監視時間が優先されるためです。OSによるコネクション確立処理の監視時間，コネクション確立要求の再送回数および再送処理の間隔は，OSによって異なります。

この属性は省略できます。この属性を省略した場合，または0を指定した場合，コネクション確立の監視処理はOSによって行われます。

●cupSendHost="送信元ホスト"　　～〈文字列〉

次のコネクション確立要求時の送信元ホストを指定します。

スケジューラダイレクト機能を使用したRPC

ネームサービスを使用したRPC

リモートAPI機能を使用したRPC

通信先を指定したRPC

TCP/IP通信機能

ホスト名として，10進ドット記法のIPアドレスを指定することもできます。

なお，次の場合は，発行したメソッドで例外が発生します。

ホスト名として，localhostを指定した場合

IPアドレスが127で始まるホストを指定した場合

CUP.NETを実行するマシン上に存在しないホスト名を指定した場合

この属性を省略すると，送信元ホストは任意に割り当てられます。

この属性は，CUP.NETのコネクション確立要求時の送信元ホストを指定できますが，CUP.NETが相手システムからコネクション確立を受け付けるCUP.NETの受信元ホストには適用されません。

記述例

<socket connectTimeout="10"
       cupSendHost="HOSTA"/>

xarTransaction

形式

<xarTransaction expireTime="トランザクションブランチ限界経過時間"/>

説明

CUP.NETからMSDTC連携機能を使用したトランザクションを開始する場合に指定します。

この要素は省略できます。

属性

●expireTime="トランザクションブランチ限界経過時間"　　～〈符号なし整数〉((0～65535)) （単位：秒）

トランザクションブランチ限界経過時間を指定します。指定時間を超えてもトランザクションブランチが完了しない場合，TP1/Serverはそのトランザクションブランチのプロセスを異常終了させてロールバックします。

0を指定した場合，時間監視をしません。

この属性は省略できます。省略した場合，クライアントが属しているTP1/Serverのrapリスナーサービス定義のtrn_expiration_timeオペランドに指定された値に従います。

記述例

<xarTransaction expireTime="0"/>

定義例

ネームサービスを使用する場合

<configuration>
 <configSections>
   <section
     name="hitachi.opentp1.client"
     type="Hitachi.OpenTP1.Common.Util.ProfileSectionHandler,
           Hitachi.OpenTP1.Client,Version=7.0.0.0,
           Culture=neutral,PublicKeyToken=2440cf5f0d80c91c,
           Custom=null"/>
 </configSections>

 <hitachi.opentp1.client>
   <common>
     <tp1Server host="10.210.208.13"/>
     <rpc use="nam" watchTime="0"/>
     <nameService port="10000"/>
   </common>
   <profile id="traceMode">
     <errTrace use="true" path="c:¥temp¥clientn"
               fileSize="100000"/>
     <methodTrace use="true" path="c:¥temp¥clientn"
                  fileSize="100000"/>
     <uapTrace use="true" path="c:¥temp¥clientn"
               fileSize="100000"/>
     <dataTrace use="true" path="c:¥temp¥clientn"
                fileSize="100000"/>
   </profile>
 </hitachi.opentp1.client>

</configuration>

スケジューラダイレクト機能を使用する場合

<configuration>
 <configSections>
   <section
     name="hitachi.opentp1.client"
     type="Hitachi.OpenTP1.Common.Util.ProfileSectionHandler,
           Hitachi.OpenTP1.Client,Version=7.0.0.0,
           Culture=neutral,PublicKeyToken=2440cf5f0d80c91c,
           Custom=null"/>
 </configSections>

 <hitachi.opentp1.client>
   <common>
     <tp1Server host="10.210.208.13"/>
     <rpc use="scd" watchTime="0"/>
     <scheduleService port="10010"/>
   </common>
   <profile id="traceMode">
     <errTrace use="true" path="c:¥temp¥clientn"
               fileSize="100000"/>
     <methodTrace use="true" path="c:¥temp¥clientn"
                  fileSize="100000"/>
     <uapTrace use="true" path="c:¥temp¥clientn"
               fileSize="100000"/>
     <dataTrace use="true" path="c:¥temp¥clientn"
                fileSize="100000"/>
   </profile>
 </hitachi.opentp1.client>

</configuration>

rapサービスを使用する場合

<configuration>
 <configSections>
   <section
     name="hitachi.opentp1.client"
     type="Hitachi.OpenTP1.Common.Util.ProfileSectionHandler,
           Hitachi.OpenTP1.Client,Version=7.0.0.0,
           Culture=neutral,PublicKeyToken=2440cf5f0d80c91c,
           Custom=null"/>
 </configSections>

 <hitachi.opentp1.client>
   <common>
     <tp1Server host="10.210.208.13"/>
     <rpc use="rap" watchTime="0"/>
     <rapService port="10020"/>
   </common>
   <profile id="traceMode">
     <errTrace use="true" path="c:¥temp¥clientn"
               fileSize="100000"/>
     <methodTrace use="true" path="c:¥temp¥clientn"
                  fileSize="100000"/>
     <uapTrace use="true" path="c:¥temp¥clientn"
               fileSize="100000"/>
     <dataTrace use="true" path="c:¥temp¥clientn"
                fileSize="100000"/>
   </profile>
 </hitachi.opentp1.client>

</configuration>

サーバおよび通信方式別にプロファイルを宣言する場合

<configuration>
 <configSections>
   <section
     name="hitachi.opentp1.client"
     type="Hitachi.OpenTP1.Common.Util.ProfileSectionHandler,
           Hitachi.OpenTP1.Client,Version=7.0.0.0,
           Culture=neutral,PublicKeyToken=2440cf5f0d80c91c,
           Custom=null"/>
 </configSections>

 <hitachi.opentp1.client>
   <common>
     <tp1Server host="10.210.208.1"/>
     <rpc use="rap" watchTime="0"/>
     <rapService port="10020"/>
     <errTrace use="true" path="c:¥temp¥clientn"
               fileSize="100000"/>
     <dataTrace use="true" path="c:¥temp¥clientn"
                fileSize="100000"/>
   </common>
   <profile id="nam">
     <tp1Server host="10.210.208.1"/>
     <rpc use="nam" watchTime="0"/>
     <nameService port="10000"/>
   </profile>
   <profile id="server2Rap">
     <tp1Server host="10.210.208.2"/>
     <rpc use="rap" watchTime="0"/>
     <rapService port="10020"/>
   </profile>
   <profile id="server2Nam">
     <tp1Server host="10.210.208.2"/>
     <rpc use="nam" watchTime="0"/>
     <nameService port="10000"/>
   </profile>
 </hitachi.opentp1.client>

</configuration>

4.　UAPの作成と実行

この章では，Client .NETで使用するUAPの作成方法と実行手順について説明します。

＜この章の構成＞

4.1　OpenTP1 for .NET Framework環境でのUAP開発時に必要な定義

4.2　.NETインタフェース定義を使用したSPP.NETの呼び出し方法

4.3　サービス定義を使用したSPP.NETまたはSPPの呼び出し方法

4.4　バイナリデータを使用したSPP.NETまたはSPPの呼び出し方法

4.5　通信形態によるメソッドの発行手順

4.6　UAP作成時の注意事項

4.7　UAPの実行

4.1　OpenTP1 for .NET Framework環境でのUAP開発時に必要な定義

OpenTP1 for .NET Framework環境でのUAP開発時に必要な定義について説明します。

＜この節の構成＞

4.1.1　.NETインタフェース定義

4.1.2　サービス定義

4.1.1　.NETインタフェース定義

.NETインタフェース定義は，次のUAPからSPP.NETに対して.NETインタフェース定義を使用してRPCを実行する場合に定義します。

SPP.NET

SUP.NET

CUP.NET（Connector .NETを利用してSPP.NETにサービスを要求するアプリケーションを含みます）

ここでは，.NETインタフェース定義の定義方法の詳細について説明します。.NETインタフェース定義を使用したRPCについては，「1.3.2(1)　.NETインタフェース定義を使用したRPC」を参照してください。

＜この項の構成＞

(1)　.NETインタフェース定義の定義方法

(2)　TP1ユーザ構造体

(3)　.NETインタフェース定義の定義例

(1)　.NETインタフェース定義の定義方法

(a)　.NETインタフェース定義に使用する言語

SPP.NETの.NETインタフェース定義は，SPP.NETを開発するプログラム言語で定義します。.NETインタフェース定義を定義する場合，次のプログラム言語が使用できます。COBOL言語は使用できません。

C#

J#

Visual Basic

各プログラム言語でのインタフェースの定義文法は，Visual Studioや.NET Framework SDKのドキュメントを参照してください。

なお，.NETインタフェース定義は，Visual Studioや.NET Framework SDKが提供する各プログラム言語のコンパイラで，.NET FrameworkおよびOpenTP1 for .NET Frameworkが提供するクラスライブラリだけを参照してコンパイルできる必要があります。

(b)　.NETインタフェース定義の定義規則

SPP.NETのインタフェースを定義する場合，次の規則があります。これらの規則に従っていない場合，SPP.NETの.NETインタフェース定義として使用できません。

名前空間名，インタフェース名，メソッド名には，半角英数字および半角アンダスコア（_）が使用できます。なお，名前空間の区切り文字として半角ピリオド（.）が使用できます。

メソッドの引数および戻り値に使用できるデータ型を次の表に示します。

表4-1　メソッドの引数および戻り値で使用できるデータ型

共通型システム | プログラム言語
C# | J# | Visual Basic
System.Void※ | void | void | －
System.Byte | byte | ubyte | Byte
System.Int16 | short | short | Short
System.Int32 | int | int | Integer
System.Int64 | long | long | Long
System.String | string | String | String
System.Byte[] | byte[] | ubyte[] | Byte()
System.Int16[] | short[] | short[] | Short()
System.Int32[] | int[] | int[] | Integer()
System.Int64[] | long[] | long[] | Long()
System.String[] | string[] | String[] | String()
TP1ユーザ構造体 | － | － | －
TP1ユーザ構造体配列 | － | － | －

（凡例）

－：プログラム言語による差異はありません。

注※

System.Voidはメソッドの戻り値にだけ指定できます。

メソッドの引数に使用できるパラメタ属性を次の表に示します。

表4-2　メソッドの引数に使用できるパラメタ属性

意味 | プログラム言語
C# | J#※1 | Visual Basic
値渡し | var（省略可） | なし | ByVal（省略可）
出力渡し | out | 指定不可※2 | 指定不可※2
参照渡し | ref | Holderクラス※1 | ByRef

注※1

J#ではパラメタ属性の代わりにデータ型で表現します。J#では値型の参照渡しができないため，OpenTP1が提供するHolderクラスを使用してください。

注※2

out属性はC#固有の属性です。C#以外では指定できません。C#以外のプログラム言語で使用する場合は，代わりに参照渡しを使用してください。

OpenTP1が提供するHolderクラスを次の表に示します。

表4-3　OpenTP1が提供するHolderクラス

Holderクラス名 | 保持する値の型
J# | 共通型システム
Hitachi.OpenTP1.UByteHolder | ubyte | System.Byte
Hitachi.OpenTP1.ShortHolder | short | System.Int16
Hitachi.OpenTP1.IntHolder | int | System.Int32
Hitachi.OpenTP1.LongHolder | long | System.Int64
Hitachi.OpenTP1.StringHolder | String | System.String
Hitachi.OpenTP1.UByteArrayHolder | ubyte[] | System.Byte[]
Hitachi.OpenTP1.ShortArrayHolder | short[] | System.Int16[]
Hitachi.OpenTP1.IntArrayHolder | int[] | System.Int32[]
Hitachi.OpenTP1.LongArrayHolder | long[] | System.Int64[]
Hitachi.OpenTP1.StringArrayHolder | String[] | System.String[]

注1

これらのHolderクラスはJ#でだけ使用できます。C#およびVisual Basicではref，ByRefなどのパラメタ属性を使用してください。

注2

これらのHolderクラスは，メソッドの引数としてだけ使用できます。メソッドの戻り値には使用できません。

メソッド名の長さは31文字以内でなければなりません。なお，メソッド名はSPP.NETのサービス名になります。

メソッド名は英字で始まる必要があります。

メソッドのオーバロードはできません。

大文字，小文字だけが異なる同じ名称のメソッドを定義することはできません。

(2)　TP1ユーザ構造体

(a)　TP1ユーザ構造体とは

TP1ユーザ構造体は，複数の値をまとめて保持できるクラスのことです。

(b)　TP1ユーザ構造体の定義規則

TP1ユーザ構造体を定義する場合の規則を次に示します。

TP1ユーザ構造体として利用するクラスは，Hitachi.OpenTP1.TP1UserStructクラスを継承します。

デフォルトコンストラクタ（アクセス修飾子がpublicで，引数のないコンストラクタ）を持つ必要があります。

set，get両方のアクセサを持つpublicプロパティが一つ以上必要です。

大文字，小文字だけが異なる同一名称のプロパティを定義することはできません。

注意

publicプロパティ以外のすべてのメンバはRPCで送受信されるデータには含まれません。

(c)　TP1ユーザ構造体のプロパティとして利用できるデータ型

TP1ユーザ構造体のプロパティとして利用できるデータ型，およびメソッドの引数として使用できるパラメタ属性を次の表に示します。

表4-4　TP1ユーザ構造体のプロパティとして利用できるデータ型

共通型システム | プログラム言語
C# | J# | Visual Basic
System.Byte | byte | ubyte | Byte
System.Int16 | short | short | Short
System.Int32 | int | int | Integer
System.Int64 | long | long | Long
System.String | string | String | String
System.Byte[] | byte[] | ubyte[] | Byte()
System.Int16[] | short[] | short[] | Short()
System.Int32[] | int[] | int[] | Integer()
System.Int64[] | long[] | long[] | Long()
System.String[] | string[] | String[] | String()
TP1ユーザ構造体 | － | － | －
TP1ユーザ構造体配列 | － | － | －

（凡例）

－：プログラム言語による差異はありません。

(d)　TP1ユーザ構造体の参照渡しの方法

TP1ユーザ構造体の参照渡しをするには，パラメタ属性を使用します。ただし，J#の場合は参照渡しができないため，Hitachi.OpenTP1.ITP1UserStructHolderを実装する必要があります。実装上の規則を次に示します。

プロパティとして利用できるデータ型はTP1ユーザ構造体，またはTP1ユーザ構造体の配列に限られます。

プロパティはset，get両方のアクセサを持ち，アクセス修飾子がpublicである必要があります。

プロパティは一つしか定義してはいけません。

実装クラスの名称規則を，次の表に示します。

プロパティのデータ型 | 実装クラスの名称
TP1ユーザ構造体 | TP1ユーザ構造体クラス名称＋"Holder"
TP1ユーザ構造体配列 | TP1ユーザ構造体クラス名称＋"ArrayHolder"

実装クラスの名前空間は，プロパティのデータ型と同じ名前空間である必要があります。

なお，プロパティ以外のすべてのメンバはRPCで送受信されるデータには含まれません。TP1ユーザ構造体の参照渡しの使用例については，「4.1.1(3)(b)　J#での定義例」を参照してください。

(3)　.NETインタフェース定義の定義例

.NETインタフェース定義の定義例を，開発言語ごとに示します。

(a)　C#での定義例

using System;
using Hitachi.OpenTP1;
namespace MyCompany
{

 public interface IGyoumuA
 {
   void Service1(string dataId, byte[] data);
   string[] Service2(string key);
   int Service3(int inCount, ref string[] ids);
   short Service4(MyStruct inStruct);
 }
 public class MyStruct : TP1UserStruct
 {
     private int id;
     private string name;

     public MyStruct(){}

     public int Id
     {
       set{
          id = value;
       }
       get{
          return id;
       }
     }

     public string Name
     {
        set{
           name = value;
        }
        get{
           return name;
        }
     }
 }
}

(b)　J#での定義例

package MyCompany;
import System.*;
import Hitachi.OpenTP1.*;

public interface IGyoumuA
{
   void Service1(String dataId, ubyte[] data);
   String[] Service2(String key);
   int Service3(int inCount, StringArrayHolder ids);
   short Service4(MyStruct inStruct, MyStructHolder outStruct);
}

//TP1ユーザ構造体の参照渡しをするためのクラス
public class MyStructHolder implements ITP1UserStructHolder
{
  private MyStruct val;
  /** @property */
  public void set_Value(MyStruct value)
  {
         val = value;
  }
  /** @property */
  public MyStruct get_Value()
  {
         return val;
  }
}

//TP1ユーザ構造体
public class MyStruct extends TP1UserStruct
{
  private int id;
  private String name;

  public MyStruct()
  {
  }

  /** @property */
  public void set_Id(int value)
  {
         id = value;
  }
  /** @property */
  public int get_Id()
  {
         return id;
  }
  /** @property */
  public void set_Name(String value)
  {
         name = value;
  }
  /** @property */
  public String get_Name()
  {
         return name;
  }
}

(c)　Visual Basicでの定義例

Imports System
Imports Hitachi.OpenTP1
Namespace MyCompany
 Public Interface IGyoumuA
   Sub Service1(ByVal dataId As String, ByVal data() As Byte)
   Function Service2(ByVal key As String) As String()
   Function Service3(ByVal inCount As Integer, _
                     ByRef ids() As String) As Integer
   Function Service4(ByVal inStruct As MyStruct) As Short
 End Interface

 Public Class MyStruct
     Inherits TP1UserStruct
     Private idValue As Integer
     Private nameValue As String

     Public Sub New()
     End Sub

     Public Property Id() As Integer
         Set(ByVal value As Integer)
              idValue = value
         End Set
         Get
              Return idValue
         End Get
     End Property

     Public Property Name() As String
         Set(ByVal value As String)
              nameValue = value
         End Set
         Get
              Return nameValue
         End Get
     End Property
 End Class
End Namespace

4.1.2　サービス定義

サービス定義は，次のUAPからSPP.NET，またはSPPに対してサービス定義を使用してRPCを実行する場合に定義します。

SPP.NET

SUP.NET

CUP.NET（Connector .NETを利用してSPP.NET，またはSPPにサービスを要求するアプリケーションを含みます）

サービス定義は，サービス定義のファイルとサービス定義が参照するデータ型定義のファイルから構成されます。この節では，サービス定義の定義方法の詳細について説明します。サービス定義を使用したRPCについては，「1.3.2(2)　サービス定義（カスタムレコード）を使用したRPC」を参照してください。

＜この項の構成＞

(1)　データ型定義ファイル

(2)　サービス定義ファイル

(1)　データ型定義ファイル

データ型定義とは，RPCでやり取りされる入力データや出力データの形式をメッセージ単位で定義するものです。

サービス定義から参照するデータ型定義ファイルは，次に示す形式で独立したファイルとして定義します。

(a)　形式

struct データ型定義名称 {
       データ型 メンバ名称[配列指定];
   〔〔データ型 メンバ名称[配列指定];〕…〕
};
〔〔struct データ型定義名称 {
       データ型 メンバ名称[配列指定];
   〔〔データ型 メンバ名称[配列指定];〕…〕
};〕…〕

(b)　説明

●データ型定義名称　　～〈31文字以内の識別子〉

データ型定義に付ける名称を指定します。

指定された名称がカスタムレコードクラスのクラス名となります。

●データ型

メンバ名称で示される変数に対するデータ型を指定します。

クライアントスタブ生成コマンド（spp2cstub）は，定義された各メンバのデータ型を次の表に示すように，.NET Frameworkのデータ型に対応づけてカスタムレコードクラスを生成します。

また，データの内容を次の表に示すように変換します。

表4-5　データ型の変換規則と変換内容

データ型定義ファイルで定義されたデータ型
データ型の説明
カスタムレコードクラスで定義される.NET Frameworkのデータ型
データ変換の内容

char
文字列
System.String
charは.NET FrameworkのSystem.Stringに対応づけられます。カスタムレコードを入力データとして使用する場合，スタブ生成コマンドに指定したエンコード方式に従ってバイト配列に変換しデータを扱います。
バイト配列に変換した結果が32バイトで，データ型定義がchar a[30]の場合，2バイトは破棄されます。

int
32ビット符号付き整数
System.Int32
intは.NET FrameworkのSystem.Int32に対応づけられます。
カスタムレコードを入力データとして使用する場合，スタブ生成コマンドに指定されたエンディアンでバイト配列に変換して，RPCの要求メッセージに設定します。
カスタムレコードを出力データとして使用する場合，応答メッセージから4バイトをスタブ生成コマンドに指定されたエンディアンで読み込み，データにセットします。

short
16ビット符号付き整数
System.Int16
shortは.NET FrameworkのSystem.Int16に対応づけられます。カスタムレコードを入力データとして使用する場合，指定されたエンディアンでバイト配列に変換して，RPCの要求メッセージに設定します。
カスタムレコードを出力データとして使用する場合，RPCの応答メッセージから2バイトをスタブ生成コマンドに指定されたエンディアンで読み込み，データにセットします。

long
32ビット符号付き整数
System.Int32
longは.NET FrameworkのSystem.Int32に対応づけられます。
カスタムレコードを入力データとして使用する場合，スタブ生成コマンドに指定されたエンディアンでバイト配列に変換して，RPCの要求メッセージに設定します。
カスタムレコードを出力データとして使用する場合，応答メッセージから4バイトをスタブ生成コマンドに指定されたエンディアンで読み込み，データにセットします。

byte
バイナリデータ
System.Byte
byteは.NET FrameworkのSystem.Byteに対応づけられます。
一次元配列指定にだけ使用できます。

struct
構造体
class（インナークラス）
データ型定義でstructとして定義されるデータ型のことを構造体と呼びます。
structはインナークラスに対応づけられます。

データ型がint，long，またはstructの場合は，先頭からのオフセットが4の整数倍でなければなりません。また，shortの場合は，先頭からのオフセットが2の整数倍でなければなりません。

なお，スタブ生成コマンドでは，自動的にバウンダリ調整をしないため，先頭からのオフセットが正しい整数倍でない場合，エラーとなるので注意が必要です。

バウンダリ調整については，「(d)　バウンダリ調整」を参照してください。

データ型がstructの場合は，次に示すように定義します。

struct 構造体名称 {
       データ型 メンバ名称[配列指定];
   〔〔データ型 メンバ名称[配列指定];〕…〕
} メンバ名称[配列指定];

データ型定義でstructとして定義されるメンバは，その構造体名称がそのままインナークラスのクラス名称になり，メンバ名称がインナークラスの型を持つプロパティ名称になります。

ここで指定するデータ型，メンバ名称，配列要素数はデータ型定義に従います。また，この構造体のデータ型定義先頭からのオフセットは，4の整数倍でなければなりません。また，構造体自身のサイズも4の整数倍でなければなりません。

ただし，構造体を構成するメンバ（構造体の中に構造体がある場合は，そのメンバも含む）がすべてcharまたはbyteの場合は，任意のオフセットおよび任意のサイズを定義できます。

データ型定義でstructとして定義される配列型は，可変長構造体配列として扱えます。可変長構造体配列については，「(e)　可変長構造体配列」を参照してください。

●構造体名称　　～〈31文字以内の識別子〉

構造体に付ける名称を指定します。

構造体名称の先頭文字は半角英字とします。2文字目以降は半角英数字および半角アンダスコア（_）が使用できます。

●メンバ名称　　～〈31文字以内の識別子〉

メンバ名称を指定します。

メンバ名称の先頭文字は半角英字で指定してください。

●配列指定

配列要素数　　～〈符号なし整数〉((1～8388608))

メンバがデータ型の配列の場合，配列要素数を指定します。

データ型がint，short，long，またはstructのときは，一次元配列が指定できます（配列指定なしも指定できます）。

データ型がbyteのときは，一次元配列だけ指定できます。

データ型がcharのときは，二次元配列まで指定できます。

一次元配列

[配列要素数]

二次元配列

[配列要素数][配列要素数]

(c)　データ型定義の定義例

struct in_data {
long I_basho[3];
long I_kakaku;
long I_tokuchou;
};

struct out_data {
char o_name[20];
char o_basho[16];
char o_tokuchou[20];
long o_kakaku;
char o_inf[80];
};

struct out_data2 {
char o_name[20];
char o_basho[16];
char o_tokuchou[20];
long o_kakaku;
char o_inf[80][20];
};

struct put_data {
int  o_num;
struct data {
 char o_name[20];
 char o_basho[16];
 char o_tokuchou[20];
 long o_kakaku;
 char o_inf[80];
} data_t[100];
};

(d)　バウンダリ調整

バウンダリ調整とは，データ型定義の各変数を決められたバイト境界に配置することをいいます。バウンダリ調整は，コンパイラが自動的に行います。

例えば，次に示すような構造体を使用している場合，先頭からのオフセットを正しくするため，実際はOS，およびコンパイラによって，dataとnumの間に1バイトの補正が入ります。

構造体の定義例

struct s_data {
   char data[3];
   long num;
} s_data_t

バウンダリ調整後の定義例

struct s_data {
 char data[3];
   <1バイト>
   long num;
} s_data_t

この例の場合には，次のように修正して使用してください。

修正前

struct s_data {
   char data[3];
   long num;
} s_data_t;

修正後

struct s_data {
   char data[3];
   char wk;
   long num;
} s_data_t;

ポイント

OpenTP1 for .NET Framework以外のOpenTP1システムで使用していた構造体をデータ型定義として使用する場合などは，バウンダリ調整に注意してください。

(e)　可変長構造体配列

データ型がstructで，配列型の場合は，可変長構造体配列として扱えます。可変長構造体配列は次に示す形式で定義します。

可変長構造体配列の形式

int 配列要素数を示すメンバ名称
struct 構造体名称 {
                  データ型 メンバ名称[配列指定];
                 〔〔データ型 メンバ名称[配列指定];〕…〕
} メンバ名称[配列要素数を示すメンバ名称:配列の最大要素数];

可変長構造体配列を指定する場合は，可変長構造体配列の配列要素数を「データ型がint型の配列要素数を示すメンバ名称:配列の最大要素数」という形式で記述します。構造体名称，データ型，メンバ名称および配列指定については，「(b)　説明」を参照してください。

可変長構造体配列の定義例

struct put_data {
                int o_num;
                struct data{
                            char o_name[20];
                            char o_basho[16];
                            char o_tokuchou[20];
                            long o_kakaku;
                            char o_inf[80];
                            } data_t[o_num:100];
                };

可変長構造体配列を使用する場合は，次の点に注意してください。

配列要素数を示すメンバ名称は可変長構造体配列より前に定義してください。

配列要素数を示すメンバ名称の値は配列の最大要素数に指定した値以下にしてください。配列要素数を示すメンバ名称の値が配列の最大要素数に指定した値を超える場合はエラーが発生します。

可変長構造体配列を使用する場合は，構造体の長さは配列の最大要素数に指定した値で計算されるので，配列の最大要素数を指定するときはデータ型定義の長さが1から8388608バイトの範囲になるように指定してください。ただし，RPC送受信メッセージの最大長拡張機能を使用しない場合は，データ型定義の長さは1から1048576バイトの範囲になるように指定してください。

生成されたカスタムレコードを使用する場合，可変長構造体配列に対応するプロパティには，配列の最大要素数以内の構造体配列を指定してください。nullまたは配列の最大要素数を超える構造体配列を指定した場合は，TP1MarshalException例外が発生します。

(f)　注意事項

データ型定義では任意の位置にコメントを記述できます。コメントは「/*」で始め，「*/」で終了します。なお，コメントのネストはできません。

データ型定義全体の長さは1から8388608バイトの範囲になるように記述してください。ただし，RPC送受信メッセージの最大長拡張機能を使用しない場合は，1から1048576バイトの範囲になるように記述してください。

データ型定義ファイルでは，1文を複数行にわたって指定しないでください。

データ型定義名称としてdcおよびDCで始まる名称は使用しないでください。

データ型定義名称，メンバ名称としてクライアントスタブおよびカスタムレコードクラスを生成するプログラム言語のキーワードは使用できません。

生成されたカスタムレコードを使用する場合，配列および固定長構造体配列に対応するプロパティには要素数分の配列数を指定してください。nullまたは要素数分以外の配列数を指定した場合は，TP1MarshalException例外が発生します。

一つのデータ型定義に同じ名前のメンバ名称を指定しないでください。

(2)　サービス定義ファイル

サービス定義とは，サービスの入出力データに対応するデータ型定義を定義するものです。

サービス定義ファイルは，次に示す形式で独立したファイルとして定義します。

(a)　形式

#include "データ型定義ファイル名"
〔〔#include "データ型定義ファイル名"〕
…〕

interface サービス定義名称 {
     サービス名称(入力データ型定義名, 出力データ型定義名);
 〔〔サービス名称(入力データ型定義名, 出力データ型定義名);〕…〕
}

(b)　説明

●データ型定義ファイル名　　～〈ファイル名〉

このサービス定義で参照するデータ型定義が定義されているファイル名を指定します。ファイル名は次のどちらかの形式で指定します。

拡張子を含んだファイル名だけを指定する。

相対パスまたは絶対パスを含んだファイル名で指定する。

なお，パス指定時の区切り文字には「/」または「¥」が使用できます。

●サービス定義名称　　～〈31文字以内の識別子〉

このサービス定義に付けるサービス定義名称を指定します。

任意に名称を付けることができます。デフォルトではこの名称からクライアントスタブなどのクラス名が生成されます。

●サービス名称　　～〈31文字以内の識別子〉

このサービス定義に含めるサービス名称を指定します。

対象となるユーザサーバが持つサービス名称を指定してください。

●入力データ型定義名　　～〈31文字以内の識別子〉

各サービスの入力データに対応するデータ型定義名称を指定します。

入力データ型定義名は，このサービス定義ファイルの#includeディレクティブで指定したデータ型定義ファイルで定義されたデータ型定義名称でなければなりません。

●出力データ型定義名　　～〈31文字以内の識別子〉

各サービスの出力データに対応するデータ型定義名称を指定します。

出力データ型定義名は，このサービス定義ファイルの#includeディレクティブで指定したデータ型定義ファイルで定義されたデータ型定義名称でなければなりません。

ただし，出力データがない場合は，出力データ型定義名にはDC_NODATAを指定してください（非応答型RPCの場合だけ使用できます）。

(c)　サービス定義の定義例

サービス定義の定義例1（業務1のサービス定義）

#include "mydata.h"
/* 業務1のサービス定義 */
interface GYOUMU1 {
   GETDATA1(in_data, out_data);
   GETDATA2(in_data, out_data2);
}

サービス定義の定義例2（業務2のサービス定義）

#include "datas/mydata.h"
/* 業務2のサービス定義 */
interface GYOUMU2 {
   GET_DATA1(in_data, out_data);
   PUT_DATA1(put_data, DC_NODATA);  /* 非応答型 */
}

データ型定義の定義例（mydata.h）

struct in_data {
long I_basho[3];
long I_kakaku;
};
struct out_data {
char o_name[20];
char o_basho[16];
long o_kakaku;
char o_inf[80];
};
struct out_data2 {
char o_name[20];
char o_basho[16];
long o_kakaku;
char o_inf[80][20];
};
struct put_data {
int  o_num;
struct data {
 char o_name[20];
 char o_basho[16];
 long o_kakaku;
 char o_inf[80];
} data_t[100];
};

(d)　注意事項

サービス定義では任意の位置にコメントを記述できます。コメントは「/*」で始め，「*/」で終了します。なお，コメントのネストはできません。

コメント文中に「//」は使用できません。

4.2　.NETインタフェース定義を使用したSPP.NETの呼び出し方法

CUP.NETから.NETインタフェース定義を使用してSPP.NETを呼び出す方法について説明します。

Extension .NET，Connector .NETの各UAPからの呼び出し方法については，それぞれマニュアル「TP1/Extension for .NET Framework 使用の手引」，マニュアル「TP1/Connector for .NET Framework 使用の手引」を参照してください。なお，次のプログラム言語が使用できます。COBOL言語は使用できません。

C#

J#

Visual Basic

＜この節の構成＞

4.2.1　クライアントスタブの生成

4.2.2　クライアントスタブの使用方法

4.2.3　クライアントスタブ使用時のデータ長の計算方法

4.2.4　.NETインタフェース定義から生成したクライアントスタブの使用例

4.2.1　クライアントスタブの生成

クライアントスタブ生成コマンド（if2cstub）を使用して，.NETインタフェース定義からクライアントスタブを生成します。

クライアントスタブは，クライアントスタブを利用するクライアントアプリケーション（CUP.NET）を記述するプログラム言語で生成してください。

.NETインタフェース定義を記述したプログラム言語と生成するクライアントスタブのプログラム言語が異なる場合，クライアントスタブのメソッドの引数のパラメタ属性は次の表に従って対応づけられます。

表4-6　クライアントスタブでのパラメタ属性の対応づけ

プログラム言語とメソッドの引数のパラメタ属性（.NETインタフェース定義） | メソッドの引数のパラメタ属性（クライアントスタブ）
C# | J# | Visual Basic
C# | なし | なし | なし | ByVal
out | out | Holderクラス※1 | ByRef※1
ref | ref | Holderクラス | ByRef
J# | なし | なし | なし | ByVal
Holderクラス | ref※2 | Holderクラス | ByRef※2
Visual Basic | なし | なし | なし | ByVal
ByVal | なし | なし | ByVal
ByRef | ref | Holderクラス | ByRef

注※1

呼び出し元で値を設定しても，値はサーバに渡されません。

注※2

Holderクラスは，各Holderクラスが保持する型の参照渡しに対応づけられます。

4.2.2　クライアントスタブの使用方法

クライアントスタブを使用してサービス要求をする手順を次に示します。

クライアントスタブをTP1Clientクラスのインスタンスごと，およびサービスグループごとにインスタンス化します。

入力パラメタにデータを設定します。

必要に応じてプロパティ（Flagsなど）を設定します。

サービスメソッドを呼び出します。

以降，必要に応じて2.～4.を繰り返し実行できます。

4.2.3　クライアントスタブ使用時のデータ長の計算方法

クライアントスタブを使用する場合は，入出力パラメタやカスタムレコードクラスと，入出力メッセージの間の変換をClient .NETが行います。ただし，送受信するユーザメッセージがRPCメッセージの最大長を超えないようにするためには，入力メッセージ長および応答メッセージ長の値を見積もっておく必要があります。

＜この項の構成＞

(1)　データ型ごとの合計値を計算する

(2)　データトレースを使用する

(1)　データ型ごとの合計値を計算する

次に示す計算式を用いて，入力および出力で使用するデータ型ごとの合計値を計算してください。

入力メッセージ長＝メソッドの入力パラメタおよび参照パラメタの最大データ長の合計＋512

応答メッセージ長＝メソッドの出力パラメタ，参照パラメタ，および戻り値の最大データ長の合計＋512

計算式に代入する値を，次の表に示します。

表4-7　計算式に代入する値（.NETインタフェース定義）

パラメタのデータ型 | メッセージ上のサイズの最大値（単位：バイト）
System.Byte | 1
System.Int16 | 3
System.Int32 | 7
System.Int64 | 15
System.String | 格納された文字数×2＋13
System.Byte[] | a＋11
System.Int16[] | 2×a＋11
System.Int32[] | 4×a＋11
System.Int64[] | 8×a＋11
System.String[] | Σ（格納された文字数×2＋13）＋11
TP1ユーザ構造体 | 各メンバの最大長の合計＋4
TP1ユーザ構造体配列 | Σ（各メンバの最大長の合計＋4）＋11

（凡例）

a：配列の要素数

注

スタブによって自動的に調整されるサイズを含みます。

(2)　データトレースを使用する

Client .NETのトラブルシュート機能であるデータトレースを使用して，実際に送受信されたメッセージ長を確認できます。データトレースの詳細については，「2.9.3　データトレース」を参照してください。

4.2.4　.NETインタフェース定義から生成したクライアントスタブの使用例

クライアントスタブの使用例を次に示します。

この例で呼び出すSPP.NETのサービスメソッドの情報は次のとおりです。

サービスグループ名：GRP1

インタフェース名：MyCompany.IGyoumuA

呼び出すサービスメソッド名（サービス名）：Service3

リモートAPI機能：使用（非オートコネクトモード）

構成ファイル：指定あり（プロファイルID＝"TP1Host1"）

なお，コメント中の(1)，(2)などは「4.2.2　クライアントスタブの使用方法」の説明の番号に対応しています。

＜この項の構成＞

(1)　.NETインタフェース定義の定義例（C#の場合）

(2)　クライアントスタブの使用例（CUP.NET，C#の場合（リモートAPI機能使用時））

(3)　クライアントスタブの使用例（CUP.NET，J#の場合（リモートAPI機能使用時））

(4)　クライアントスタブの使用例（CUP.NET，Visual Basicの場合（リモートAPI機能使用時））

(1)　.NETインタフェース定義の定義例（C#の場合）

namespace MyCompany
{
 using System;

 public interface IGyoumuA
 {
   void Service1(string dataId, byte[] data);
   string[] Service2(string key);
   int Service3(int inCount, ref string[] ids);
 }
}

(2)　クライアントスタブの使用例（CUP.NET，C#の場合（リモートAPI機能使用時））

using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Client;

namespace MyCompany
{
 public class CallerSample
 {
   public static void Main(string[] args)
   {
     try {
       TP1Client clt = new TP1Client();  // TP1Clientの生成
       IGyoumuAStub server = null;
       // (1) クライアントスタブの生成
       server = new IGyoumuAStub(clt, "GRP1");
       clt.OpenRpc("TP1Host1");      // RPCオープン
       clt.OpenConnection();         // 常設コネクションの確立
       // (2) 入力データの設定
       string[] ids = {"data1", "data2", "data3"};
       // (3) 同期応答型RPCに設定
       server.Flags = TP1ClientFlags.DCNOFLAGS;
       // (4) service3を呼び出す
       int ret = server.Service3(3, ref ids);
       clt.CloseConnection();        // 常設コネクションの解放
       clt.CloseRpc();               // RPCクローズ
     } catch (TP1UserException exp) {
       // Service3()からユーザ例外がスローされた
     } catch (TP1RemoteException exp) {
       // Service3()で予期しない例外発生
     } catch (TP1ClientException exp) {
       // Client .NETが検知したエラー
     } catch (TP1Exception exp) {
       // その他スタブなど検知したエラー
     } catch (Exception exp) {
       // 予期しない例外
     }
   }
 }
}

(3)　クライアントスタブの使用例（CUP.NET，J#の場合（リモートAPI機能使用時））

package MyCompany;
import System.*;
import Hitachi.OpenTP1.*;
import Hitachi.OpenTP1.Client.*;

public class CallerSampleImpl
{
 public static void main(String[] args)
 {
   try {
     TP1Client clt = new TP1Client();  // TP1Clientの生成
     IGyoumuAStub server = null;
     // (1) クライアントスタブの生成
     server = new IGyoumuAStub(clt, "GRP1");
     clt.OpenRpc("TP1Host1");       // RPCオープン
     clt.OpenConnection();          // 常設コネクションのオープン
     // (2) 入力データの設定
     String[] ids = {"data1", "data2", "data3"};
     StringArrayHolder idsHolder = new StringArrayHolder();
     idsHolder.set_Value(ids);
     // (3) 同期応答型RPCに設定
     server.set_Flags(TP1ClientFlags.DCNOFLAGS);
     // (4) service3を呼び出す
     int ret = server.Service3(3, idsHolder);
     ids = idsHolder.get_Value();
     clt.CloseConnection();         // 常設コネクションのクローズ
     clt.CloseRpc();                // RPCクローズ
   } catch (TP1UserException exp) {
     // Service3()からユーザ例外がスローされた
   } catch (TP1RemoteException exp) {
     // Service3()で予期しない例外発生
   } catch (TP1ClientException exp) {
     // Client .NETが検知したエラー
   } catch (TP1Exception exp) {
     // その他スタブなどが検知したエラー
   } catch (System.Exception exp) {
     // 予期しない例外
   }
 }
}

(4)　クライアントスタブの使用例（CUP.NET，Visual Basicの場合（リモートAPI機能使用時））

Imports System
Imports Hitachi.OpenTP1
Imports Hitachi.OpenTP1.Client

Namespace MyCompany
 Public Class CallerSample
   Public Shared Sub Main(ByVal args() As String)
     Dim clt As TP1Client
     Dim server As IGyoumuAStub
     Dim ret As Integer
     Dim ids() As String
     Try
       clt = New TP1Client()  ' TP1Clientの生成
       ' (1) クライアントスタブの生成
       server = New IGyoumuAStub(clt, "GRP1")
       clt.OpenRpc("TP1Host1")       ' RPCオープン
       clt.OpenConnection()          ' 常設コネクションの確立
       ' (2) 入力データの設定
       ids = New String() {"data1", "data2", "data3"}
       ' (3) 同期応答型RPCに設定
       server.Flags = TP1ClientFlags.DCNOFLAGS
       ' (4) service3を呼び出す
       ret = server.Service3(3, ids)
       clt.CloseConnection()         ' 常設コネクションの解放
       clt.CloseRpc()                ' RPCクローズ
     Catch exp As TP1UserException
       ' Service3()からユーザ例外がスローされた
     Catch exp As TP1RemoteException
       ' Service3()で予期しない例外発生
     Catch exp As TP1ClientException
       ' Client .NETが検知したエラー
     Catch exp As TP1Exception
       ' その他スタブなどが検知したエラー
     Catch exp As Exception
       ' 予期しない例外
     End Try
   End Function
 End Class
End Namespace

4.3　サービス定義を使用したSPP.NETまたはSPPの呼び出し方法

CUP.NETからサービス定義を使用してSPP.NETまたはSPPを呼び出す方法について説明します。

Extension .NET，Connector .NETの各UAPからの呼び出し方法については，それぞれマニュアル「TP1/Extension for .NET Framework 使用の手引」，マニュアル「TP1/Connector for .NET Framework 使用の手引」を参照してください。なお，次のプログラム言語が使用できます。COBOL言語は使用できません。

C#

J#

Visual Basic

＜この節の構成＞

4.3.1　クライアントスタブの生成

4.3.2　クライアントスタブの使用方法

4.3.3　クライアントスタブ使用時のデータ長の計算方法

4.3.4　サービス定義から生成したクライアントスタブの使用例

4.3.1　クライアントスタブの生成

クライアントスタブ生成コマンド（spp2cstub）を使用して，サービス定義からクライアントスタブおよびカスタムレコードクラスを生成します。

クライアントスタブおよびカスタムレコードクラスは，クライアントスタブを利用するクライアントアプリケーション（CUP.NET）を記述するプログラム言語で生成してください。

データ型定義で指定された各メンバは，カスタムレコードクラスのpublicプロパティとなります。

4.3.2　クライアントスタブの使用方法

クライアントスタブを使用してサービス要求をする手順を次に示します。

クライアントスタブをTP1Clientクラスのインスタンスごと，およびサービスグループごとにインスタンス化します。

入力用，および出力用のカスタムレコードクラスをインスタンス化します。

入力用カスタムレコードのプロパティに入力データを設定します。

必要に応じてプロパティ（Flagsなど）を設定します。

サービスメソッドを呼び出します。

出力用カスタムレコードのプロパティから応答データを参照します。

以降，必要に応じて2.～6.，または3.～6.を繰り返し実行できます。

4.3.3　クライアントスタブ使用時のデータ長の計算方法

クライアントスタブを使用する場合は，入出力パラメタやカスタムレコードクラスと，入出力メッセージの間の変換をClient .NETが行います。ただし，送受信するユーザメッセージがRPCメッセージの最大長を超えないようにするためには，入力メッセージ長および応答メッセージ長の値を見積もっておく必要があります。

＜この項の構成＞

(1)　データ型ごとの合計値を計算する

(2)　カスタムレコードクラスのソースコードを確認する

(3)　データトレースを使用する

(1)　データ型ごとの合計値を計算する

次に示す計算式を用いて，入力および出力で使用するデータ型ごとの合計値を計算してください。

入力メッセージ長＝データ型定義の各メンバのデータ長の合計

応答メッセージ長＝データ型定義の各メンバのデータ長の合計

計算式に代入する値を，次の表に示します。

表4-8　計算式に代入する値（サービス定義）

データ型定義のメンバのデータ型 | メッセージ上のサイズ（単位：バイト）
char | 1
short | 2
int | 4
long | 4
char[a][b] | a×b
short[a] | 2×a
byte[a] | 1×a
struct | 構造体の各メンバのサイズの合計
struct[a] | 構造体の各メンバのサイズの合計×a

（凡例）

a，b：配列の要素数

注

可変長構造体配列の場合，配列の最大要素数で見積もるようにしてください。

(2)　カスタムレコードクラスのソースコードを確認する

カスタムレコードクラスのソースコードのprivate constフィールド_lengthを参照して，計算後のメッセージ上のサイズが確認できます。

(3)　データトレースを使用する

Client .NETのトラブルシュート機能であるデータトレースを使用して，実際に送受信されたメッセージ長を確認できます。データトレースの詳細については，「2.9.3　データトレース」を参照してください。

4.3.4　サービス定義から生成したクライアントスタブの使用例

クライアントスタブの使用例を次に示します。

この例で呼び出すSPPのサービスの情報は次のとおりです。

サービスグループ名：SVGRP1

サービス定義名称：GYOUMU1

呼び出すサービス名（サービス名）：GETDATA1

入力用カスタムレコードクラス名：in_data

出力用カスタムレコードクラス名：out_data

リモートAPI機能：未使用

なお，コメント中の(1)，(2)などは「4.3.2　クライアントスタブの使用方法」の説明の番号に対応しています。

＜この項の構成＞

(1)　サービス定義の定義例（C#の場合）

(2)　カスタムレコードクラスの出力例（C#の場合，in_data.cs）

(3)　クライアントスタブの使用例（CUP.NET，C#の場合（リモートAPI機能未使用時））

(4)　クライアントスタブの使用例（CUP.NET，J#の場合（リモートAPI機能未使用時））

(5)　クライアントスタブの使用例（CUP.NET，Visual Basicの場合（リモートAPI機能未使用時））

(1)　サービス定義の定義例（C#の場合）

(a)　サービス定義の定義例（業務1のサービス定義）

#include "mydata.h"
/* 業務1のサービス定義 */
interface GYOUMU1 {    
   GETDATA1(in_data, out_data);
   GETDATA2(in_data, out_data2);
}

(b)　データ型定義の定義例（mydata.h）

struct in_data {
      long i_basho[3];
      long i_kakaku;
};
struct out_data {
      char o_name[20];
      char o_basho[16];
      long o_kakaku;
      char o_inf[80];
};
struct out_data2 {
      int o_count;
      struct data {
             char o_name[20];
             char o_basho[16];
             long o_kakaku;
             char o_inf[80];
      } data_t[100];
};

(2)　カスタムレコードクラスの出力例（C#の場合，in_data.cs）

using Hitachi.OpenTP1.Common;

namespace MyCompany
{
   public class in_data : RecordImpl
   {
       public in_data() : base("default")
       {
           …
       }
       public in_data(string recordName) : base(recordName)
       {
           …
       }
       …
       private int[] _i_basho;
       public int[] i_basho
       {
           get
           {
               return _i_basho;
           }
           set
           {
               _i_basho = value;
           }
       }

       private int _i_kakaku = 0;
       public int i_kakaku
       {
           get
           {
               return _i_kakaku;
           }
           set
           {
               _i_kakaku = value;
           }
       }
       …
   }
}

(3)　クライアントスタブの使用例（CUP.NET，C#の場合（リモートAPI機能未使用時））

using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Client;

namespace MyCompany
{
 public class Caller2Sample
 {
   public static void Main(string[] args)
   {
     try {
       TP1Client clt = new TP1Client();  // TP1Clientの生成
       GYOUMU1Stub server = null;
       // (1) クライアントスタブの生成
       server = new GYOUMU1Stub(clt, "SVGRP1");
       clt.OpenRpc();             // RPCオープン
       // (2) 入力用カスタムレコードの生成
       in_data inRecord = new in_data();
       // (2) 出力用カスタムレコードの生成
       out_data outRecord = new out_data();
       inRecord.i_basho[0] = 56;  // (3) 入力データの設定
       inRecord.i_basho[1] = 43;  // (3) 入力データの設定
       inRecord.i_basho[2] = 18;  // (3) 入力データの設定
       // (4) 同期応答型RPCに設定
       server.Flags = TP1ClientFlags.DCNOFLAGS;
       // (5) GETDATA1を呼び出す
       server.GETDATA1(inRecord, outRecord);
       // (6) 応答データの取り出し
       string name = outRecord.o_name.Trim();
       clt.CloseRpc();            // RPCクローズ
     } catch (TP1ClientException exp) {
       // Client .NETが検知したエラー
     } catch (TP1Exception exp) {
       // その他スタブなどが検知したエラー
     } catch (Exception exp) {
       // 予期しない例外
     }
   }
 }
}

(4)　クライアントスタブの使用例（CUP.NET，J#の場合（リモートAPI機能未使用時））

package MyCompany;
import System.*;
import Hitachi.OpenTP1.*;
import Hitachi.OpenTP1.Client.*;

public class Caller2Sample
{
 public static void main(String[] args)
 {
   try {
     String name;
     TP1Client clt = new TP1Client(); // TP1Clientの生成
     GYOUMU1Stub server = null;
     // (1) クライアントスタブの生成
     server = new GYOUMU1Stub(clt, "SVGRP1");
     clt.OpenRpc();                   // RPCオープン
     // (2) 入力用カスタムレコードの生成
     in_data inRecord = new in_data();
     // (2) 出力用カスタムレコードの生成
     out_data outRecord = new out_data();
     inRecord.get_i_basho()[0] = 56;  // (3) 入力データの設定
     inRecord.get_i_basho()[1] = 43;  // (3) 入力データの設定
     inRecord.get_i_basho()[2] = 18;  // (3) 入力データの設定
     // (4) 同期応答型RPCに設定
     server.set_Flags(TP1ClientFlags.DCNOFLAGS);
     // (5) GETDATA1を呼び出す
     server.GETDATA1(inRecord, outRecord);
     // (6) 応答データの取り出し
     name = outRecord.get_o_name().trim();
     clt.CloseRpc();                  // RPCクローズ
   } catch (TP1ClientException exp) {
     // Client .NETが検知したエラー
   } catch (TP1Exception exp) {
     // その他スタブなどが検知したエラー
   } catch (System.Exception exp) {
     // 予期しない例外
   }
 }
}

(5)　クライアントスタブの使用例（CUP.NET，Visual Basicの場合（リモートAPI機能未使用時））

Imports System
Imports Hitachi.OpenTP1
Imports Hitachi.OpenTP1.Client

Namespace MyCompany
 Public Class Caller2Sample
   Public Shared Sub Main(ByVal args() As String)
     Dim clt As TP1Client
     Dim server As GYOUMU1Stub
     Dim name As String
     Dim inRecord As in_data
     Dim outRecord As out_data
     Try
       clt = New TP1Client()  ' TP1Clientの生成
       ' (1) クライアントスタブの生成
       server = New GYOUMU1Stub(clt, "SVGRP1")
       clt.OpenRpc()             ' RPCオープン
       ' (2) 入力用カスタムレコードの生成
       inRecord = New in_data()
       ' (2) 出力用カスタムレコードの生成
       outRecord = New out_data()
       inRecord.i_basho(0) = 56  ' (3) 入力データの設定
       inRecord.i_basho(1) = 43  ' (3) 入力データの設定
       inRecord.i_basho(2) = 18  ' (3) 入力データの設定
       ' (4) 同期応答型RPCに設定
       server.Flags = TP1ClientFlags.DCNOFLAGS
       ' (5) GETDATA1を呼び出す
       server.GETDATA1(inRecord, outRecord)
       ' (6) 応答データの取り出し
       name = outRecord.O_name.Trim()
       clt.CloseRpc()            ' RPCクローズ
     Catch exp As TP1ClientException
       ' Client .NETが検知したエラー
     Catch exp As TP1Exception
       ' その他スタブなどが検知したエラー
     Catch exp As Exception
       ' 予期しない例外
     End Try
   End Sub
 End Class
End Namespace

4.4　バイナリデータを使用したSPP.NETまたはSPPの呼び出し方法

CUP.NETからバイナリデータを使用してSPP.NETまたはSPPを呼び出す方法について説明します。

Extension .NET，Connector .NETの各UAPからの呼び出し方法については，それぞれマニュアル「TP1/Extension for .NET Framework 使用の手引」，マニュアル「TP1/Connector for .NET Framework 使用の手引」を参照してください。なお，次のプログラム言語が使用できます。

C#

J#

Visual Basic

COBOL言語

＜この節の構成＞

4.4.1　バイナリデータを使用する場合の留意事項

4.4.2　バイナリデータを使用する場合のCallメソッドの使用例

4.4.1　バイナリデータを使用する場合の留意事項

バイナリデータを使用してRPC要求をする場合は，.NETインタフェース定義，サービス定義，およびクライアントスタブは使用しません。

.NETインタフェース定義を使用していないSPP.NETを呼び出すことができます。.NETインタフェース定義を使用したSPP.NETに対してはこの方法でのRPC要求はできません。

参考

バイナリデータを使用したRPC要求は，通常，C言語やCOBOL言語で記述されたSPPの呼び出しに使用します。

バイナリデータを使用してRPC要求をする場合は，Callメソッドを使用します。Callメソッドの引数には入力データ用のバイト配列と出力データ用のバイト配列があり，これらの領域をCUP.NETが用意しておく必要があります。

RPCのメッセージの形式は呼び出し元のCUP.NETと呼び出し先のSPP.NETまたはSPPとの間であらかじめ決めておきます。この形式に従って，CUP.NETでバイナリデータとしての編集処理をする必要があります。

4.4.2　バイナリデータを使用する場合のCallメソッドの使用例

バイナリデータを使用する場合のCallメソッドの使用例を次に示します。

この例で呼び出すSPPのサービスの情報は次のとおりです。

サービスグループ名：SVGRP1

呼び出すサービス名：SERV1

リモートAPI機能：未使用

構成ファイル：指定あり（プロファイルID="TP1Host1"）

＜この項の構成＞

(1)　Callメソッドの使用例（CUP.NET，C#の場合（リモートAPI機能未使用時））

(2)　Callメソッドの使用例（CUP.NET，J#の場合（リモートAPI機能未使用時））

(3)　Callメソッドの使用例（CUP.NET，Visual Basicの場合（リモートAPI機能未使用時））

(4)　Callメソッドの使用例（CUP.NET，COBOL言語の場合（リモートAPI機能未使用時））

(1)　Callメソッドの使用例（CUP.NET，C#の場合（リモートAPI機能未使用時））

using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Client;

namespace MyCompany
{
 public class MyApplication1
 {
   …
   public static void Main(string[] args)
   {
     try {
       TP1Client clt = new TP1Client();  // TP1Clientの生成
       clt.OpenRpc("TP1Host1");          // RPCオープン

       int    maxInLen = 512;      // 入力データ格納領域長
       int    maxOutLen = 512;     // 応答データ格納領域長
       int    inLen = 0;           // 入力データ長
       int    outLen = maxOutLen;  // 応答データ最大長
       byte[] inData;              // 入力データ格納領域
       byte[] outData;             // 応答データ格納領域
       String inStr = "Say Hello to OpenTP1!";  // 入力データ
       String outStr = null;                    // 応答データ
       byte[] inDataTemp;

       inData = new byte[maxInLen];
       System.Text.Encoding enc = System.Text.Encoding.Default;
       inDataTemp = enc.GetBytes(inStr);
       System.Array.Copy(          // 入力データの設定
           inDataTemp, 0, inData, 0, inDataTemp.Length);
       inLen += inDataTemp.Length;
       outData = new byte[maxOutLen];
       // RPC実行
       clt.Call("SVGRP1", "SERV1", inData, inLen,
           outData, ref outLen, TP1ClientFlags.DCNOFLAGS);
       outStr = enc.GetString(outData, 0, outLen);

       clt.CloseRpc();                   // RPCクローズ
     } catch (TP1ClientException exp) {
       // Client .NETが検知したエラー
     } catch (TP1Exception exp) {
       // Client .NET（OpenTP1共通クラス）が検知したエラー
     } catch (Exception exp) {
       // 予期しない例外
     }
   }
 }
}

(2)　Callメソッドの使用例（CUP.NET，J#の場合（リモートAPI機能未使用時））

package MyCompany;
import System.*;
import Hitachi.OpenTP1.*;
import Hitachi.OpenTP1.Client.*;

public class MyApplication1
{
 …
 public static void main(String[] args)
 {
   try {
     TP1Client clt = new TP1Client();          // TP1Clientの生成
     clt.OpenRpc("TP1Host1");                  // RPCオープン

     int     maxInLen = 512;      // 入力データ格納領域長
     int     maxOutLen = 512;     // 応答データ格納領域長
     int     inLen  = 0;          // 入力データ長
     int     outLen = maxOutLen;  // 応答データ最大長
     ubyte[] inData;              // 入力データ格納領域
     ubyte[] outData;             // 応答データ格納領域
     String  inStr = "Say Hello to OpenTP1!";  // 入力データ
     String  outStr = null;                    // 応答データ
     ubyte[] inDataTemp;

     inData = new ubyte[maxInLen];
     System.Text.Encoding enc =
                 System.Text.Encoding.get_Default();
     inDataTemp = enc.GetBytes(inStr);
     System.Array.Copy(           // 入力データの設定
         inDataTemp, 0, inData, 0, inDataTemp.length);
     inLen += inDataTemp.length;
     outData = new ubyte[maxOutLen];
     // RPC実行
     clt.Call("SVGRP1", "SERV1", inData, inLen,
         outData, outLen, TP1ClientFlags.DCNOFLAGS);
     outStr = enc.GetString(outData, 0, outLen);

     clt.CloseRpc();                           // RPCクローズ
   } catch (TP1ClientException exp) {
     // Client .NETが検知したエラー
   } catch (TP1Exception exp) {
     // Client .NET（OpenTP1共通クラス）が検知したエラー
   } catch (System.Exception exp) {
     // 予期しない例外
   }
 }
}

(3)　Callメソッドの使用例（CUP.NET，Visual Basicの場合（リモートAPI機能未使用時））

Imports System
Imports Hitachi.OpenTP1
Imports Hitachi.OpenTP1.Client

Namespace MyCompany
 Public Class MyApplication1
   …
   Public Shared Sub Main(ByVal args() As String)
     Dim clt As TP1Client
     Dim maxInLen As Integer = 512       ' 入力データ格納領域長
     Dim maxOutLen As Integer = 512      ' 応答データ格納領域長
     Dim inLen As Integer                ' 入力データ長
     Dim outLen As Integer               ' 応答データ最大長
     Dim inData(maxInLen - 1) As Byte    ' 入力データ格納領域
     Dim outData(maxOutLen - 1) As Byte  ' 応答データ格納領域
     Dim inStr As String                 ' 入力データ
     Dim outStr As String                ' 応答データ
     Dim inDataTemp() As Byte
     Dim enc As System.Text.Encoding
     Try
       clt = New TP1Client()             ' TP1Clientの生成
       clt.OpenRpc("TP1Host1")           ' RPCオープン

       inLen = 0
       outLen = maxOutLen
       inStr = "Say Hello to OpenTP1!"
       enc = System.Text.Encoding.Default
       inDataTemp = enc.GetBytes(inStr)
       System.Array.Copy(inDataTemp, 0, inData,  _
           0, inDataTemp.Length)         ' 入力データの設定
       inLen += inDataTemp.Length
       ' RPC実行
       clt.Call("SVGRP1", "SERV1", inData, inLen,  _
           outData, outLen, TP1ClientFlags.DCNOFLAGS)
       outStr = enc.GetString(outData, 0, outLen)

       clt.CloseRpc()                    ' RPCクローズ
     Catch exp As TP1ClientException
       ' Client .NETが検知したエラー
     Catch exp As TP1Exception
       ' Client .NET（OpenTP1共通クラス）が検知したエラー
     Catch exp As Exception
       ' 予期しない例外
     End Try
   End Sub
 End Class
End Namespace

(4)　Callメソッドの使用例（CUP.NET，COBOL言語の場合（リモートAPI機能未使用時））

IDENTIFICATION DIVISION.
PROGRAM-ID. MYAPPLICATION1 AS "MYAPPLICATION1".
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS SYSTEMEXCEPTION AS 'System.Exception'.
CLASS TP1CLIENTEXCEPTION  AS
                'Hitachi.OpenTP1.Client.TP1ClientException'.
CLASS TP1EXCEPTION    AS 'Hitachi.OpenTP1.TP1Exception'.
CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.
CLASS TP1CLIENT       AS 'Hitachi.OpenTP1.Client.TP1Client'.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01  CLT                USAGE OBJECT REFERENCE TP1CLIENT.
*
01  MAX-IN-LEN         USAGE BINARY-LONG VALUE 512.
01  MAX-OUT-LEN        USAGE BINARY-LONG VALUE 512.
01  IN-LEN             USAGE BINARY-LONG.
01  OUT-LEN            USAGE BINARY-LONG.
01  IN-DATA            USAGE OBJECT REFERENCE BYTE-ARRAY.
01  OUT-DATA           USAGE OBJECT REFERENCE BYTE-ARRAY.
01  RPC-FLAGS          USAGE BINARY-LONG VALUE 0.
*
01  IN-STR             PIC X(512) VALUE 'Say Hello to OpenTP1!'.
01  OUT-STR            PIC X(512).
*
01  PROFILE-ID         PIC X(20) VALUE 'TP1Host1'.
01  PROFILE-ID-STR     USAGE STRING.
01  SERVICE-GROUP      PIC X(20) VALUE 'SVGRP1'.
01  SERVICE-GROUP-STR  USAGE STRING.
01  SERVICE-NAME       PIC X(20) VALUE 'SERV1'.
01  SERVICE-NAME-STR   USAGE STRING.
*
01  TMP-X-LEN          PIC S9(9) COMP-5.
*
PROCEDURE DIVISION.
DECLARATIVES.
 TP1CLIENT-EXCEPTION SECTION.
*    TP1/Client for .NET Frameworkが検知したエラー
  USE AFTER EXCEPTION OBJECT TP1CLIENTEXCEPTION.
  RESUME PROG-END.
  TP1-EXCEPTION SECTION.
*    TP1/Client for .NET Framework(OpenTP1共通クラス)が検知したエラー
  USE AFTER EXCEPTION OBJECT TP1EXCEPTION.
  RESUME PROG-END.
  SYSTEM-EXCEPTION SECTION.
  USE AFTER EXCEPTION OBJECT SYSTEMEXCEPTION.
*    予期しない例外
  RESUME PROG-END.
  END DECLARATIVES.
*
  MAIN-PROC.
*    TP1Clientの生成
    INVOKE TP1CLIENT 'New' RETURNING CLT.
    SET PROFILE-ID-STR TO
        FUNCTION ALPHANUMERIC-TO-STRING(PROFILE-ID).
*    RPCオープン
    INVOKE CLT 'OpenRpc' USING BY VALUE PROFILE-ID-STR.
*    入力データ長
    MOVE MAX-IN-LEN TO IN-LEN.
*    応答データ最大長
    MOVE MAX-OUT-LEN TO OUT-LEN.
*    入力データ格納領域
    INVOKE BYTE-ARRAY 'New' USING BY VALUE MAX-IN-LEN
                            RETURNING IN-DATA.
*    入力データの設定
    MOVE MAX-IN-LEN TO TMP-X-LEN.
    CALL 'CBLXTOBYTEARRAY' USING IN-STR IN-DATA
                                 TMP-X-LEN.
*    応答データ格納領域
    INVOKE BYTE-ARRAY 'New' USING BY VALUE MAX-OUT-LEN
                            RETURNING OUT-DATA.
*
    SET SERVICE-GROUP-STR TO
        FUNCTION ALPHANUMERIC-TO-STRING(SERVICE-GROUP).
    SET SERVICE-NAME-STR TO
        FUNCTION ALPHANUMERIC-TO-STRING(SERVICE-NAME).
    MOVE 0 TO RPC-FLAGS.
*    RPC実行
    INVOKE CLT 'Call' USING BY VALUE SERVICE-GROUP-STR
                               BY VALUE SERVICE-NAME-STR
                               BY VALUE IN-DATA
                               BY VALUE IN-LEN
                               BY VALUE OUT-DATA
                               BY REFERENCE OUT-LEN
                               BY VALUE RPC-FLAGS.
*
    MOVE OUT-LEN TO TMP-X-LEN.
    CALL 'CBLBYTEARRAYTOX' USING OUT-DATA TMP-X-LEN
                               OUT-STR.
*
PROG-END.
*    RPCクローズ
    IF NOT CLT = NULL THEN
        INVOKE CLT 'CloseRpc'
    END-IF.
END PROGRAM MYAPPLICATION1.

4.5　通信形態によるメソッドの発行手順

使用する通信形態によって，メソッドの発行順序が異なります。通信形態別のメソッド発行順序について，次に説明します。

＜この節の構成＞

4.5.1　非オートコネクトモードでリモートAPI機能を使用する場合

4.5.2　オートコネクトモードでリモートAPI機能を使用する場合

4.5.3　ネームサービスを使用したRPCの場合

4.5.4　スケジューラダイレクト機能を使用したRPCの場合

4.5.5　TCP/IP通信機能（一方送信）を使用する場合

4.5.6　TCP/IP通信機能（一方受信）を使用する場合

4.5.7　TCP/IP通信機能（送受信，CUP.NETがクライアント）を使用する場合

4.5.8　TCP/IP通信機能（送受信，CUP.NETがサーバ）を使用する場合

4.5.9　動的定義変更機能を使用する場合

4.5.1　非オートコネクトモードでリモートAPI機能を使用する場合

TP1Clientクラスのインスタンスを生成します。

構成定義を特定のプロファイルから読み込む場合は，OpenRpcメソッドを発行します。

コネクション確立のためOpenConnectionメソッドを発行します。

RPC要求をします（何度でも発行できます）。

CloseConnectionメソッドを発行します。
再度RPC要求をする場合は，3.から繰り返します。

構成定義をリセットする場合は，CloseRpcメソッドを発行します。
再度RPC要求をする場合は，2.または3.から繰り返します。

4.5.2　オートコネクトモードでリモートAPI機能を使用する場合

TP1Clientクラスのインスタンスを生成します。

構成定義を特定のプロファイルから読み込む場合は，OpenRpcメソッドを発行します。

RPC要求をします（何度でも発行できます）。

CloseConnectionメソッドを発行します。
再度RPC要求をする場合は，3.から繰り返します。

構成定義をリセットする場合は，CloseRpcメソッドを発行します。
再度RPC要求をする場合は，2.または3.から繰り返します。

4.5.3　ネームサービスを使用したRPCの場合

TP1Clientクラスのインスタンスを生成します。

OpenRpcメソッドを発行します。

RPC要求をします（何度でも発行できます）。

CloseRpcメソッドを発行します。
再度RPC要求をする場合は，2.から繰り返します。

4.5.4　スケジューラダイレクト機能を使用したRPCの場合

TP1Clientクラスのインスタンスを生成します。

OpenRpcメソッドを発行します。

RPC要求をします（何度でも発行できます）。

CloseRpcメソッドを発行します。
再度RPC要求をする場合は，2.から繰り返します。

4.5.5　TCP/IP通信機能（一方送信）を使用する場合

TP1Clientクラスのインスタンスを生成します。

OpenRpcメソッドを発行します。

Sendメソッドを発行します（何度でも発行できます）。

構成定義をリセットする場合は，CloseRpcメソッドを発行します。
再度TCP/IP通信をする場合は，2.から繰り返します。

4.5.6　TCP/IP通信機能（一方受信）を使用する場合

TP1Clientクラスのインスタンスを生成します。

OpenRpcメソッドを発行します。

Receiveメソッドを発行します（何度でも発行できます）。

構成定義をリセットする場合は，CloseRpcメソッドを発行します。
再度TCP/IP通信をする場合は，2.から繰り返します。

4.5.7　TCP/IP通信機能（送受信，CUP.NETがクライアント）を使用する場合

TP1Clientクラスのインスタンスを生成します。

OpenRpcメソッドを発行します。

Sendメソッドを発行します。

Receiveメソッドを発行します。
3.，4.を繰り返すことができます。

構成定義をリセットする場合は，CloseRpcメソッドを発行します。
再度TCP/IP通信をする場合は，2.から繰り返します。

4.5.8　TCP/IP通信機能（送受信，CUP.NETがサーバ）を使用する場合

TP1Clientクラスのインスタンスを生成します。

OpenRpcメソッドを発行します。

Receiveメソッドを発行します。

Sendメソッドを発行します。
3.，4.を繰り返すことができます。

構成定義をリセットする場合は，CloseRpcメソッドを発行します。
再度TCP/IP通信をする場合は，2.から繰り返します。

4.5.9　動的定義変更機能を使用する場合

TP1Clientクラスのインスタンスを生成します。

構成定義を特定のプロファイルから読み込む場合は，OpenRpcメソッドを発行します。

動的定義変更用のSetXxxxメソッドを発行します。
Xxxxは変更する構成定義項目に対応した名称になります。

通信形態に従って通信します。
3.，4.を繰り返すことができます。

構成定義をリセットする場合は，CloseRpcメソッドを発行します。
再度通信をする場合は，2.または3.から繰り返します。

4.6　UAP作成時の注意事項

＜この節の構成＞

4.6.1　CUP.NETの実行環境と留意点

4.6.2　例外の捕捉とエラーの判定

4.6.3　COBOL言語を使用する場合の注意事項

4.6.4　クラスライブラリを使用する場合の注意事項

4.6.1　CUP.NETの実行環境と留意点

Client .NETはCUP.NETで利用するクラスライブラリをアセンブリ（DLL形式）として提供します。CUP.NETは，アプリケーションの形態によってさまざまなランタイムホストで実行されます。

使用するランタイムホストごとに，アプリケーションドメインの構成，アセンブリの配置と検索方法，セキュリティポリシー，スレッド構成，およびアプリケーション構成ファイルの配置が異なるため，CUP.NETを実行する前に，使用するランタイムホストの仕様を確認してください。

なお，複数のスレッドが同時に実行される環境で使用する場合には，TP1Clientクラスのインスタンスを複数のスレッドで同時に使用しないよう適切な排他制御が必要です。

4.6.2　例外の捕捉とエラーの判定

CUP.NETでは，Client .NETが提供するクラスライブラリやスタブ，.NET Frameworkなどから例外が発生する場合があります。これらの例外は適切に捕捉してください。

Client .NETからは，次の例外が発生する可能性があります。

表4-9　発生する可能性がある例外

名前空間
例外名
意味

Hitachi.OpenTP1
TP1Exception
共通の例外基底クラス

TP1RemoteException
サーバで発生した例外の受信

TP1UserException
ユーザが任意に使用

TP1MarshalException
スタブでのデータ変換エラー

Hitachi.OpenTP1.Client
TP1ClientException
クラスライブラリでのエラー検知

ErrXxxxException
（TP1ClientExceptionのサブクラス）
クラスライブラリでの各種エラー検知※

注※

詳細については，「6.　クラスリファレンス」を参照してください。

＜この項の構成＞

(1)　TP1Exception

(2)　TP1RemoteException

(3)　TP1UserException

(4)　TP1MarshalException

(5)　TP1ClientException

(6)　その他の例外（ErrXxxxException（TP1ClientExceptionのサブクラス））

(1)　TP1Exception

OpenTP1のすべての例外の基底クラスです。個別の例外を補捉しないで，まとめて捕捉したい場合などにこのTP1ExceptionクラスですべてのOpenTP1の例外を捕捉できます。

(2)　TP1RemoteException

クライアントスタブを使用してRPC要求をした場合に，サーバ側で例外が発生したことを示す例外です。呼び出し元のクライアント側で発生した例外とサーバ側で発生した例外を区別できます。

(3)　TP1UserException

クライアント，およびサーバを.NETインタフェース定義を使用したOpenTP1 for .NET FrameworkのUAPで作成した場合に，RPC要求されたサービスメソッドからクライアントにこの例外を返すことができます。

この例外はUAPで任意に使用できます。また，クライアント側でもTP1RemoteExceptionには変換されません。

なお，.NETインタフェース定義を使用しない場合は，この例外を使用しないでください。使用した場合，クライアント側にRPC要求のエラーが通知されます。

(4)　TP1MarshalException

クライアントスタブを使用してRPC要求をした場合に，データ変換エラーが発生したことを示す例外です。クライアントとサーバで.NETインタフェース定義が一致していない場合や，サービス定義（データ型定義）に誤りがあった場合などに発生します。

(5)　TP1ClientException

Client .NETが提供するクラスライブラリの各クラスおよびメソッドでエラーを検知した場合に発生する，すべての例外の基底クラスです。

各例外のサブクラス，および各メソッドでの発生条件や内容の詳細については，「6.　クラスリファレンス」を参照してください。

(6)　その他の例外（ErrXxxxException（TP1ClientExceptionのサブクラス））

その他の例外については，「6.　クラスリファレンス」を参照してください（Xxxxは，例外クラス名によって異なります）。

4.6.3　COBOL言語を使用する場合の注意事項

COBOL言語でUAPを作成する場合，次の点に注意してください。

COBOL言語で，.NETインタフェース定義およびサービス定義は使用できません。

リポジトリ段落で，Client .NETが提供するクラスを参照するように指定してください。

PUBLICクラスとして宣言してください。

AS指定のないクラス名の場合，名前空間は「COBOL2002.DefaultNamespace」が仮定されます。AS指定があるクラス名の場合，名前空間は仮定されません。

COBOL言語のそのほかの注意事項については，マニュアル「COBOL2002 for .NET Framework ユーザーズガイド」を参照してください。

4.6.4　クラスライブラリを使用する場合の注意事項

クラスライブラリを使用する場合，次の点に注意してください。

Hitachi.OpenTP1で始まる名前空間はOpenTP1が使用するため，OpenTP1以外のアプリケーションでは使用できません。

Client .NETが提供するクラスライブラリはマルチスレッド環境で使用できますが，スレッドセーフではありません。マルチスレッド環境で使用する場合は，TP1Clientクラスのインスタンスをスレッド間で同時に使用しないよう，適切に排他をしてください。
マルチスレッド環境で同時に使用する場合は，Connector .NETの使用を推奨します。

Client .NETが提供するクラスライブラリはSPP.NET，SUP.NET上では使用しないでください。これらのUAP上では，Extension .NETが提供するクラスライブラリを使用してください。

4.7　UAPの実行

サンプルプログラムの使用方法とノータッチデプロイメントによるCUP.NETの配布の手順について説明します。

＜この節の構成＞

4.7.1　サンプルプログラムの使用方法

4.7.2　ノータッチデプロイメントによるCUP.NETの配布

4.7.1　サンプルプログラムの使用方法

Client .NETのサンプルプログラムのディレクトリ構成，ビルド方法および実行手順を説明します。なお，以降の説明で，%DCCLNDIR%はClient .NETのインストールディレクトリを示します。

＜この項の構成＞

(1)　ディレクトリ構成

(2)　サンプルプログラムのビルド方法

(3)　サンプルプログラムの実行手順

(1)　ディレクトリ構成

Client .NETのサンプルプログラムは，次の表に示すディレクトリに格納されています。

表4-10　サンプルプログラムのディレクトリ構成

ディレクトリ | 説明
%DCCLNDIR%¥examples | Client .NETのサンプルプログラム格納ディレクトリ
%DCCLNDIR%¥examples¥C# | C#のサンプルプログラム格納ディレクトリ
%DCCLNDIR%¥examples¥J# | J#のサンプルプログラム格納ディレクトリ
%DCCLNDIR%¥examples¥VB.NET | Visual Basicのサンプルプログラム格納ディレクトリ
%DCCLNDIR%¥examples¥COBOL.NET | COBOL言語のサンプルプログラム格納ディレクトリ

各言語のサンプルプログラム格納ディレクトリ下は，次の表に示す名称のディレクトリで構成されます。それぞれのディレクトリの名称と，格納されているサンプルプログラムの種類について，開発言語別に次の表に示します。

表4-11　サンプルプログラムの種類（C#，J#，およびVisual Basicの場合）

名称
説明

CUPBIN
RPC要求インタフェースとしてバイナリデータを使用したCUP.NETです。
このサンプルプログラムでは，クライアントスタブを使用しません。

CUPCR
RPC要求インタフェースとしてサービス定義から生成されたクライアントスタブとカスタムレコードを使用したCUP.NETです。

CUPIF
RPC要求インタフェースとして.NETインタフェース定義から生成されたクライアントスタブを使用したCUP.NETです。

表4-12　サンプルプログラムの種類（COBOL言語の場合）

名称
説明

CUPBIN
RPC要求インタフェースとしてバイナリデータを使用したCUP.NETです。
このサンプルプログラムでは，クライアントスタブを使用しません。

(2)　サンプルプログラムのビルド方法

Client .NETのサンプルプログラムをビルドする手順を説明します。

(a)　サンプルプログラムをビルドするための準備

次のコマンドプロンプトを起動します。

C#，J#，およびVisual Basicの場合
Visual Studioが提供するコマンドプロンプト，または.NET Framework SDKが提供するコマンドプロンプト

COBOL言語の場合
COBOL2002 for .NET Frameworkが提供するコマンドプロンプト

Windows Server 2003（64ビット用），またはWindows Vista（64ビット用）の環境でJ#のサンプルプログラムをビルドする場合は，Microsoft .NET Framework v2.0の32ビット版のインストールディレクトリを環境変数PATHに設定します。

環境変数DCCLNDIRに，Client .NETのインストールディレクトリを設定します。

【例】

set DCCLNDIR=C:¥Program Files¥HITACHI¥TP1Client for .NET Framework

(b)　サンプルプログラムをまとめてビルドする方法

サンプルプログラムをまとめてビルドする方法は，どの開発言語のサンプルプログラムをビルドするかによって異なります。それぞれの場合に分けて方法を示します。

C#，J#，およびVisual Basicのサンプルプログラムをまとめてビルドする場合
%DCCLNDIR%¥examples¥build_all.batを実行します。

すべての開発言語のサンプルプログラムをまとめてビルドする場合
%DCCLNDIR%¥examples¥build_all2.batを実行します。

言語別にサンプルプログラムをまとめてビルドする場合

C#の場合
%DCCLNDIR%¥examples¥C#¥build_cs.batを実行します。

J#の場合
%DCCLNDIR%¥examples¥J#¥build_vjs.batを実行します。

Visual Basicの場合
%DCCLNDIR%¥examples¥VB.NET¥build_vb.batを実行します。

COBOL言語の場合
%DCCLNDIR%¥examples¥COBOL.NET¥build_cbl.batを実行します。

(c)　サンプルプログラムを個別にビルドする方法

各サンプルプログラム格納ディレクトリ下のbuild.batを実行します。

【例】Visual BasicのCUPIFサンプルの場合

%DCCLNDIR%¥examples¥VB.NET¥CUPIF¥build.bat

(3)　サンプルプログラムの実行手順

Client .NETのサンプルプログラムの実行手順を説明します。

(a)　SPP.NETのサンプルプログラムの起動

各サンプルプログラムを実行するためには，Extension .NETのサンプルプログラムのうち，各サンプルプログラムが利用するSPP.NETを起動します。各サンプルプログラムが利用するSPP.NETを次の表に示します。

表4-13　サンプルプログラムが利用するSPP.NET

サンプルプログラムの種類 | 利用するSPP.NET | ユーザサーバ名
C#¥CUPBIN | C#¥SPPBIN | CSSPPBIN
C#¥CUPCR | C#¥SPPBIN | CSSPPBIN
C#¥CUPIF | C#¥SPPIF | CSSPPIF
J#¥CUPBIN | J#¥SPPBIN | VJSPPBIN
J#¥CUPCR | J#¥SPPBIN | VJSPPBIN
J#¥CUPIF | J#¥SPPIF | VJSPPIF
VB.NET¥CUPBIN | VB.NET¥SPPBIN | VBSPPBIN
VB.NET¥CUPCR | VB.NET¥SPPBIN | VBSPPBIN
VB.NET¥CUPIF | VB.NET¥SPPIF | VBSPPIF
COBOL.NET¥CUPBIN | COBOL.NET¥SPPOBJ | CBSPPOBJ

SPP.NETの起動方法については，マニュアル「TP1/Extension for .NET Framework 使用の手引」を参照してください。

(b)　構成ファイルの変更

利用するOpenTP1サーバ環境に応じて，構成ファイルのClient .NET構成定義を変更します。例えば，Visual BasicのCUPIFサンプルで，OpenTP1のホスト名やネームサービスのポート番号などを変更する場合は，%DCCLNDIR%¥examples¥VB.NET¥CUPIF¥VBCUPIF.exe.configファイルのtp1Server要素，rpc要素およびnameService要素を変更します。

(c)　CUP.NETの実行

ビルドされたCUP.NETのアセンブリを実行します。

【例】Visual BasicのCUPIFサンプルの場合

%DCCLNDIR%¥examples¥VB.NET¥CUPIF¥VBCUPIF.exe

4.7.2　ノータッチデプロイメントによるCUP.NETの配布

ノータッチデプロイメントを利用してCUP.NETを配布する方法を説明します。

＜この項の構成＞

(1)　CUP.NETおよびClient .NETを配布する場合

(2)　CUP.NETだけを配布する場合

(3)　配布したCUP.NETおよびClient .NETの削除方法

(1)　CUP.NETおよびClient .NETを配布する場合

CUP.NETおよびClient .NETを配布する場合は，配布先のクライアントマシンにClient .NETをインストールしないでください。配布先のクライアントマシンにClient .NETをインストールすると，ノータッチデプロイメントによって起動したCUP.NETはインストール済みのClient .NETを参照します。そのため，CUP.NETと一緒に配置したWebサーバ上のClient .NETが参照されません。

CUP.NETおよびClient .NETを配布する手順を次に示します。なお，次に示す手順では，CUP.NETおよびClient .NETを更新するたびに配布URLが変更されるため，一つのクライアントマシンで複数バージョンのClient .NETを使用することができます。

(a)　配布環境の構築手順

Webサーバの公開ディレクトリ下（例：http://localhost/gyoumu）に，次に示すファイルを配置します。

CUP.NET

実行アセンブリ（*.exe）

ユーザ作成のクラスライブラリ（*.dll）

Client .NET構成定義を記述したアプリケーション構成ファイル（*.exe.config）

Client .NET

Client .NETのクラスライブラリ（Hitachi.OpenTP1.Client.dll）
Hitachi.OpenTP1.Client.dllは，WebサーバにインストールしたClient .NETのインストールディレクトリ下のbinディレクトリからコピーしてください。

配布先であるクライアントマシンのランタイムセキュリティポリシーに対して，CUP.NETの実行時に必要となるアクセス許可を設定します。
J#で作成したCUP.NETは，アクセス許可セットをFullTrustにする必要があります。
必要なアクセス許可については，「2.12.2　セキュリティポリシーの設定」を参照してください。

配布先であるクライアントマシンで，Microsoft Internet Explorer 5.01以上を起動します。

起動した Microsoft Internet Explorerから，Webサーバの公開ディレクトリ下に配置したCUP.NETの実行アセンブリのURL（例：http://localhost/gyoumu/cup.exe）にアクセスしてノータッチデプロイメントを行います。

クライアントマシンにCUP.NETおよびClient .NETがキャッシュ（配布）されて，CUP.NETが起動します。

クライアントマシンで再びCUP.NETを起動する場合は，手順3.と4.を繰り返します。

(b)　配布環境のCUP.NETおよびClient .NETの更新手順

Client .NETは，Client .NETがバージョンアップしても，既存のCUP.NETに対するリコンパイルを不要とし，下位互換性を保証することを目的として，Client .NETのクラスライブラリ（Hitachi.OpenTP1.Client.dll）のアセンブリバージョンを「7.0.0.0」固定としています。したがって，Webサーバの公開ディレクトリ下に配置したHitachi.OpenTP1.Client.dllを更新して，再びクライアントマシンでCUP.NETをノータッチデプロイメントしても，起動したCUP.NETはすでにキャッシュ（配布）されているバージョンアップ前のHitachi.OpenTP1.Client.dllを参照します。

クライアントマシンに，更新後のHitachi.OpenTP1.Client.dllを反映させるために，CUP.NETおよびClient .NETのファイルを更新する手順を次に示します。

Webサーバに新しい公開ディレクトリ（URL）を用意します。

【例】

既存の公開ディレクトリ：http://localhost/gyoumu

新しく用意する公開ディレクトリ：http://localhost/gyoumu_ver2

新しい公開ディレクトリ下（例：http://localhost/gyoumu_ver2）に，更新したファイルを含むCUP.NETおよびClient .NETのファイル一式を配置します。

配布先であるクライアントマシンで， Microsoft Internet Explorer 5.01以上を起動します。

起動した Microsoft Internet Explorerから，新しい公開ディレクトリ下に配置したCUP.NETの実行アセンブリのURL（例：http://localhost/gyoumu_ver2/cup.exe）にアクセスしてノータッチデプロイメントを行います。

クライアントマシンに，更新後のCUP.NETおよびClient .NETがキャッシュ（配布）されて，CUP.NETが起動します。

クライアントマシンで更新前のCUP.NETを起動したい場合は，既存の公開ディレクトリ下に配置したCUP.NETの実行アセンブリのURL（例：http://localhost/gyoumu/cup.exe）にアクセスしてノータッチデプロイメントを行います。

(2)　CUP.NETだけを配布する場合

CUP.NETだけを配布する場合は，配布先であるクライアントマシンにClient .NETをインストールしておく必要があります。

Client .NETは，1台のマシンに複数をインストールできないため，side-by-sideの実行によって複数バージョンを同時に使用することはできません。

(a)　配布環境の構築手順

Webサーバの公開ディレクトリ下（例：http://localhost/gyoumu）に，次に示すファイルを配置します。

CUP.NET

実行アセンブリ（*.exe）

ユーザ作成のクラスライブラリ（*.dll）

Client .NET構成定義を記述したアプリケーション構成ファイル（*.exe.config）※

「(1)　CUP.NETおよびClient .NETを配布する場合」に示した配布環境の構築手順の2.～6.と同様に操作します。
このとき，手順5.でクライアントマシンにキャッシュ（配布）されるのは，CUP.NETだけです。

注※

次に示すように，カスタム構成セクション宣言の<section>要素にrequirePermission属性を追加し，その値をfalseに設定してください。

<configSections>
 <section
    name="hitachi.opentp1.client"
    type="Hitachi.OpenTP1.Common.Util.ProfileSectionHandler,
    Hitachi.OpenTP1.Client,Version=7.0.0.0,Culture=neutral,
    PublicKeyToken=2440cf5f0d80c91c,Custom=null"
    requirePermission="false"/>
</configSections>

(b)　配布環境のCUP.NETの更新手順

配布環境のCUP.NETを更新する手順については，Microsoftが提供する.NET Frameworkに関するドキュメントを参照してください。

(3)　配布したCUP.NETおよびClient .NETの削除方法

ノータッチデプロイメントによってクライアントマシンにキャッシュ（配布）されたファイルを削除する手順を説明します。次に示す操作を行うと，ノータッチデプロイメントによってキャッシュ（配布）されたすべてのファイルが削除されます。

コマンドプロンプトから，.NET Framework SDKに含まれているGacutil.exeに/cdlオプションを付加して実行します。

Microsoft Internet Explorerでインターネット一時ファイルを削除します。
Microsoft Internet Explorerを起動し，「ツール」メニューの「インターネット オプション」を選択すると表示されるウィンドウの「全般」タブで，「インターネット一時ファイル」エリアの「ファイルの削除」ボタンをクリックしてください。

5.　運用コマンド

この章では，Client .NETで使用する運用コマンドについて説明します。

＜この章の構成＞

運用コマンドの種類

if2cstub（クライアントスタブ生成コマンド（.NETインタフェース定義用））

spp2cstub（クライアントスタブ生成コマンド（サービス定義用））

運用コマンドの種類

Client .NETで使用できる運用コマンドを，次の表に示します。

表5-1　運用コマンドの種類（Client .NET）

運用コマンド | 機能
if2cstub | C#，J#，またはVisual Basicで定義されたSPP.NET用インタフェース（.NETインタフェース定義）を基に，クライアントスタブクラスのソースファイルを生成します。
spp2cstub | 指定されたサービス定義ファイル，およびそのサービス定義ファイルが参照するデータ型定義ファイルを基に，クライアントスタブクラスおよびカスタムレコードクラスのソースファイルを生成します。

if2cstub（クライアントスタブ生成コマンド（.NETインタフェース定義用））

形式

if2cstub {-t {svr|clt|con}
       〔-l {cs|vjs|vb}〕
       〔-s 生成ファイル拡張子〕
       〔-n 名前空間名称〕
       〔-o 出力先ディレクトリ〕
       〔-r スタブクラス名称〕
       〔-c {struct|nostruct}〕
       〔-X {normal|dataset}〕
       〔-m RPCメッセージの最大長〕
         -i .NETインタフェース定義ファイル名称
         インタフェース名称
        |-h}

機能

C#，J#，またはVisual Basicで定義されたSPP.NET用インタフェースを基に，クライアントスタブクラスのソースファイル（以降，クライアントスタブソースファイルと呼びます）を生成します。

オプション

●-t　{svr｜clt｜con}

生成するクライアントスタブの種類を指定します。

オプションの指定と生成されるクライアントスタブを次に示します。

オプションの指定 | 生成されるクライアントスタブ
svr | SPP.NETまたはSUP.NET（Extension .NET）用
clt | CUP.NET（Client .NET）用
con | CUP.NET（Connector .NET）用

●-l　{cs｜vjs｜vb}

生成するクライアントスタブソースファイルのプログラム言語を指定します。

このオプションを省略した場合，入力元のソースファイルと同じプログラム言語で生成します。入力元のソースファイルのプログラム言語はファイルの拡張子を基に判断されます。

オプションの指定と生成されるクライアントスタブソースファイルのプログラム言語を次に示します。

オプションの指定 | 生成されるクライアントスタブソースファイルのプログラム言語
cs | C#
vjs | J#
vb | Visual Basic

このオプションを省略した場合に，生成されるクライアントスタブソースファイルのプログラム言語を次に示します。

入力元のソースファイルの拡張子 | 生成されるクライアントスタブソースファイルのプログラム言語
cs | C#
javaまたはjsl | J#
vb | Visual Basic

●-s　生成ファイル拡張子　　～〈文字列〉

生成するクライアントスタブソースファイルの拡張子を指定します。

このオプションを省略した場合，生成されるクライアントスタブソースファイルのプログラム言語によって，拡張子は次のようになります。

生成されるクライアントスタブソースファイルのプログラム言語 | クライアントスタブソースファイルの拡張子
C# | cs
J# | jsl
Visual Basic | vb

●-n　名前空間名称　　～〈文字列〉

生成するクライアントスタブクラスの名前空間名称を指定します。

このオプションを省略した場合，入力元のインタフェースが属する名前空間と同じ名前空間でクライアントスタブクラスが生成されます。入力元のインタフェースが名前空間なしの場合，名前空間なしのクライアントスタブクラスが生成されます。

●-o　出力先ディレクトリ　　～〈パス名〉

生成するクライアントスタブソースファイルを出力するディレクトリを指定します。絶対パスまたは相対パスで指定してください。

このオプションを省略した場合，コマンド実行時のディレクトリに出力されます。なお，ファイル名はクライアントスタブごとに「〈名前空間を含まないスタブクラス名称〉.〈拡張子〉」で生成されます。

●-r　スタブクラス名称　　～〈文字列〉

生成するクライアントスタブのクラス名称を指定します。

このオプションを省略した場合，クラス名称は「〈インタフェース名称〉Stub」になります。

●-c　{struct｜nostruct}　　～《struct》

.NETインタフェース定義のメソッドのパラメタまたは戻り値にTP1ユーザ構造体を使用した場合に，クライアントスタブが利用するためのTP1ユーザ構造体クラスを出力するかどうかを指定します。

このオプションを省略した場合，TP1ユーザ構造体クラスを出力します。.NETインタフェース定義にTP1ユーザ構造体を指定していなかった場合，このオプションの指定は無視されます。

struct：TP1ユーザ構造体クラスを出力します。

nostruct：TP1ユーザ構造体クラスを出力しません。

●-X　{normal｜dataset}

生成されるクライアントスタブに，引数および戻り値がXmlDocumentクラス（System.Xml.XmlDocument）となるサービスメソッドが追加されます。

また，サービスメソッドに入力パラメタがある場合，入力データ用XMLスキーマファイルがサービスメソッドごとに出力されます。出力パラメタまたは戻り値がある場合，出力データ用XMLスキーマファイルがサービスメソッドごとに出力されます。

-tオプションにconを指定した場合だけ，このオプションの指定が有効になります。-tオプションにcon以外を指定した場合，このオプションの指定は無視されます。

このオプションを省略した場合，生成されるクライアントスタブに，引数および戻り値がXmlDocumentクラスとなるサービスメソッドは追加されません。また，入力データ用XMLスキーマファイルおよび出力データ用XMLスキーマファイルは出力されません。

normal：引数および戻り値のXmlDocumentオブジェクト（System.Xml.XmlDocument）を，.NET FrameworkのDataSetオブジェクト（System.Data.DataSet）と連携させない場合に指定します。normalを指定した場合，出力される入力データ用XMLスキーマファイルおよび出力データ用XMLスキーマファイルは，DataSetオブジェクトで利用できない場合があります。

dataset：引数および戻り値のXmlDocumentオブジェクト（System.Xml.XmlDocument）を，.NET FrameworkのDataSetオブジェクト（System.Data.DataSet）と連携させて利用する場合に指定します。datasetを指定した場合，DataSetオブジェクトで利用できる入力データ用XMLスキーマファイルおよび出力データ用XMLスキーマファイルを出力します。また，その入力データ用XMLスキーマおよび出力データ用XMLスキーマに対応したクライアントスタブを出力します。

●-m　RPCメッセージの最大長　　～〈符号なし整数〉((1～8))《1》（単位：メガバイト）

サービスメソッドが指定するRPCメッセージの最大長を指定します。

このオプションに1～8以外を指定した場合は，エラーが発生します。なお，このオプションは，-tオプションにsvrを指定したときだけ有効です。-tオプションの指定がsvr以外の場合は，-mオプションの指定は無視されます。

●-i　.NETインタフェース定義ファイル名称　　～〈ファイル名〉

入力元のインタフェースが定義されている.NETインタフェース定義ファイル名称を指定します。絶対パスまたは相対パスで指定してください。

.NETインタフェース定義を作成したプログラム言語は，このオプションで指定したファイルの拡張子によって次のように判断されます。

このオプションで指定した.NETインタフェース定義ファイルの拡張子 | .NETインタフェース定義を作成したプログラム言語の判断結果
cs | C#
javaまたはjsl | J#
vb | Visual Basic

●-h

このコマンドの使用方法を標準出力に表示します。

このオプションを指定した場合，ほかのオプションおよびコマンド引数は指定できません。

コマンド引数

●インタフェース名称

生成したいクライアントスタブに対応するSPP.NETのインタフェース名称を完全限定名で指定します。インタフェース名称は一つだけ指定できます。

注意事項

このコマンドの実行時にエラーが発生した場合は，対応するエラーメッセージが標準エラー出力に出力されます。

このコマンドで生成したクライアントスタブソースファイルの内容は変更しないでください。

入力元となる.NETインタフェース定義ファイルは，使用するWindowsのデフォルトコードページ（日本語版Windowsの場合は932）で保存してください。Unicodeなど，ほかのコードページで保存したファイルは，このコマンドの入力元として使用できません。

spp2cstub（クライアントスタブ生成コマンド（サービス定義用））

形式

spp2cstub {-t {svr|clt|con}
        〔-l {cs|vjs|vb}〕
        〔-s 生成ファイル拡張子〕
        〔-n 名前空間名称〕
        〔-o 出力先ディレクトリ〕
        〔-r スタブクラス名称〕
        〔-R データ型定義名称:カスタムレコードクラス名称
             〔,データ型定義名称:カスタムレコードクラス名称〕…〕
        〔-F {space|null}〕
        〔-I エンコーディング名〕
        〔-O エンコーディング名〕
        〔-e {big|little}〕
        〔-E {big|little}〕
        〔-b〕
        〔-X {normal|dataset}〕
          -i サービス定義ファイル名称
         |-h}

機能

指定されたサービス定義ファイル，およびそのサービス定義ファイルが参照するデータ型定義ファイルを基に，クライアントスタブクラスおよびカスタムレコードクラスのソースファイルを生成します。

オプション

●-t　{svr｜clt｜con}

生成するクライアントスタブの種類を指定します。

オプションの指定と生成されるクライアントスタブを次に示します。

オプションの指定 | 生成されるクライアントスタブ
svr | SPP.NETまたはSUP.NET（Extension .NET）用
clt | CUP.NET（Client .NET）用
con | CUP.NET（Connector .NET）用

●-l　{cs｜vjs｜vb}　　～《cs》

生成するクライアントスタブクラスおよびカスタムレコードクラスのソースファイルのプログラム言語を指定します。クライアントスタブクラスとカスタムレコードクラスは同じプログラム言語で生成されます。

このオプションを省略した場合，csが仮定されます。

オプションの指定と生成されるソースファイルのプログラム言語を次に示します。

オプションの指定 | 生成されるソースファイルのプログラム言語
cs | C#
vjs | J#
vb | Visual Basic

●-s　生成ファイル拡張子　　～〈文字列〉

生成するクライアントスタブクラスおよびカスタムレコードクラスのソースファイルの拡張子を指定します。

このオプションを省略した場合，生成されるソースファイルのプログラム言語によって，拡張子は次のようになります。

生成されるソースファイルのプログラム言語 | 生成されるソースファイルの拡張子
C# | cs
J# | jsl
Visual Basic | vb

●-n　名前空間名称　　～〈文字列〉

生成するクライアントスタブクラスおよびカスタムレコードクラスの名前空間名称を指定します。

このオプションを省略した場合，名前空間なしのクライアントスタブクラスおよびカスタムレコードクラスが生成されます。

●-o　出力先ディレクトリ　　～〈パス名〉

生成するクライアントスタブクラスおよびカスタムレコードクラスのソースファイルを出力するディレクトリを指定します。絶対パスまたは相対パスで指定してください。

このオプションを省略した場合，コマンド実行時のディレクトリに出力されます。なお，ファイル名はクライアントスタブクラスごとに「〈名前空間を含まないクライアントスタブクラス名称〉.〈拡張子〉」，カスタムレコードクラスごとに「〈名前空間を含まないカスタムレコードクラス名称〉.〈拡張子〉」で生成されます。

●-r　スタブクラス名称　　～〈文字列〉

生成するクライアントスタブのクラス名称を指定します。

このオプションを省略した場合，クラス名称は「〈サービス定義名称〉Stub」になります。なお，一つのサービス定義ファイルには，一つのサービス定義しか指定できません。

●-R　データ型定義名称:カスタムレコードクラス名称　　～〈文字列〉:〈31文字以内の識別子〉

データ型定義ファイルで定義しているデータ型定義名称と，それを基にして生成するカスタムレコードのクラス名称を指定します。

このオプションを省略した場合，データ型定義名称がカスタムレコードのクラス名称に使用されます。

複数のデータ型定義からカスタムレコードを生成する場合は，データ型定義名称と生成されるカスタムレコードのクラス名称をコロン（:）で区切って指定します。ただし，データ型定義に存在しないデータ型定義名称を指定した場合，存在しないデータ型定義名称は無視されます。存在するデータ型定義名称に対してだけカスタムレコードクラス名称の指定が有効になります。

●-F　{space｜null}　　～《space》

入力レコードとなるカスタムレコードを引数として渡す場合，データ型定義で指定した文字列領域の余った領域に埋める文字を指定します。

このオプションを省略した場合，余った領域を半角スペースで埋めます。

space：半角スペースで埋めます。

null：ヌル文字で埋めます。

●-I　エンコーディング名　　～〈文字列〉

TP1/Serverへの送信データを，エンコードするときに従うエンコード方式のエンコーディング名を指定します。指定できるエンコーディング名は，.NET Frameworkのドキュメントを参照してください。

このオプションを省略した場合，プラットフォームのデフォルトエンコーディング名になります。

プラットフォームによってサポートされているエンコード方式は異なります。代表的なエンコーディング名は次のとおりです。

エンコーディング名 | エンコード（Windows上の表示名） | 備考
euc-jp | 日本語（EUC） | －
iso-8859-1 | 西ヨーロッパ言語（ISO） | －
shift_jis | 日本語（シフト JIS） | MS932
unicodeFFFE | Unicode（Big-Endian） | －
us-ascii | US-ASCII | ISO646
utf-8 | Unicode（UTF-8） | －
utf-16 | Unicode | Little Endian

（凡例）

－：該当しません。

●-O　エンコーディング名　　～〈文字列〉

TP1/Serverから受け取った受信データを，デコードするときに従うエンコード方式のエンコーディング名を指定します。指定できるエンコーディング名については，.NET Frameworkのドキュメントを参照してください。

このオプションを省略した場合，プラットフォームのデフォルトエンコーディング名になります。

プラットフォームによってサポートされているエンコード方式は異なります。代表的なエンコーディング名については，-Iオプションの表を参照してください。

●-e　{big｜little}　　～《big》

TP1/Serverへの送信データを，指定されたエンディアンに変換します。

このオプションを省略した場合，ビッグエンディアンに変換します。

big：ビッグエンディアンに変換します。

little：リトルエンディアンに変換します。

●-E　{big｜little}　　～《big》

TP1/Serverから受け取った受信データを，指定されたエンディアンであると仮定して変換します。

このオプションを省略した場合，ビッグエンディアンであると仮定して変換します。

big：ビッグエンディアンであると仮定して変換します。

little：リトルエンディアンであると仮定して変換します。

●-b

生成されたカスタムレコードクラスごとに必要なバッファサイズを標準出力に表示します。

【表示例】

CustomRecordClassName : BufferSize[Bytes]
MyAppNS.Record1 : 448
MyAppNS.Record2 : 32

●-X　{normal｜dataset}

生成されるクライアントスタブに，引数および戻り値がXmlDocumentクラス（System.Xml.XmlDocument）となるサービスメソッドが追加されます。

また，入力データ用XMLスキーマファイルがサービスごとに出力されます。出力データ型定義名称がDC_NODATA以外の場合，出力データ用XMLスキーマファイルがサービスごとに出力されます。複数のサービスで同じデータ型定義名称を指定した場合，そのデータ型定義に対応する入力データ用XMLスキーマおよび出力データ用XMLスキーマは，一つだけ出力されます。

-tオプションにconを指定した場合だけ，このオプションの指定が有効になります。-tオプションにcon以外を指定した場合，このオプションの指定は無視されます。

このオプションを省略した場合，生成されるクライアントスタブに，引数および戻り値がXmlDocumentクラスとなるサービスメソッドは追加されません。また，入力データ用XMLスキーマファイルおよび出力データ用XMLスキーマファイルは出力されません。

normal：引数および戻り値のXmlDocumentオブジェクト（System.Xml.XmlDocument）を，.NET FrameworkのDataSetオブジェクト（System.Data.DataSet）と連携させない場合に指定します。normalを指定した場合，出力される入力データ用XMLスキーマファイルおよび出力データ用XMLスキーマファイルは，DataSetオブジェクトで利用できない場合があります。

dataset：引数および戻り値のXmlDocumentオブジェクト（System.Xml.XmlDocument）を，.NET FrameworkのDataSetオブジェクト（System.Data.DataSet）と連携させて利用する場合に指定します。datasetを指定した場合，DataSetオブジェクトで利用できる入力データ用XMLスキーマファイルおよび出力データ用XMLスキーマファイルを出力します。また，その入力データ用XMLスキーマおよび出力データ用XMLスキーマに対応したクライアントスタブを出力します。

●-i　サービス定義ファイル名称　　～〈ファイル名〉

サービス定義が指定されているファイル名称を指定します。絶対パスまたは相対パスで指定してください。

●-h

このコマンドの使用方法を標準出力に表示します。

このオプションを指定した場合，ほかのオプションおよびコマンド引数は指定できません。

注意事項

このコマンドの実行時にエラーが発生した場合は，対応するエラーメッセージが標準エラー出力に出力されます。

このコマンドで生成したソースファイルの内容を変更しないでください。

サービス定義ファイルの#includeディレクティブには，サービス定義ファイルの存在するディレクトリからの相対パスを指定します。#includeディレクティブに相対パスを指定していない場合は，データ型定義ファイルはサービス定義ファイルと同じディレクトリになければなりません。

入力元となるサービス定義ファイルおよびデータ型定義ファイルは，使用するWindowsのデフォルトコードページ（日本語版Windowsの場合は932）で保存してください。Unicodeなど，ほかのコードページで保存したファイルは，このコマンドの入力元として使用できません。

6.　クラスリファレンス

この章では，Client .NETで使用するクラスについて説明します。

＜この章の構成＞

Client .NETで利用できるクラス

DCRpcBindTbl

ErrAcceptCanceledException

ErrBufferOverflowException

ErrClientTimedOutException

ErrCollisionMessageException

ErrConnfreeException

ErrConnRefusedException

ErrFatalException

ErrHazardException

ErrHazardNoBeginException

ErrHeuristicException

ErrHeuristicNoBeginException

ErrHostUndefException

ErrInitializingException

ErrInvalidArgsException

ErrInvalidMessageException

ErrInvalidPortException

ErrInvalidReplyException

ErrIOErrException

ErrMarshalException

ErrMessageTooBigException

ErrNetDownAtClientException

ErrNetDownAtServerException

ErrNetDownException

ErrNoBeginException

ErrNoBufsAtServerException

ErrNoBufsException

ErrNoSuchServiceException

ErrNoSuchServiceGroupException

ErrNotTrnExtendException

ErrNotUpException

ErrProtoException

ErrReplyTooBigException

ErrRMException

ErrRollbackException

ErrRollbackNoBeginException

ErrSecchkException

ErrServerBusyException

ErrServerTimedOutException

ErrServiceClosedException

ErrServiceNotUpException

ErrServiceTerminatedException

ErrServiceTerminatingException

ErrSyserrAtServerException

ErrSyserrException

ErrTestmodeException

ErrTimedOutException

ErrTMException

ErrTrnchkException

ErrTrnchkExtendException

ErrVersionException

IntArrayHolder

IntHolder

IRecordインタフェース

LongArrayHolder

LongHolder

ShortArrayHolder

ShortHolder

StringArrayHolder

StringHolder

TP1Client

TP1ClientError

TP1ClientException

TP1ClientFlags

TP1Error

TP1Exception

TP1MarshalException

TP1RemoteException

TP1RpcMethod

TP1UserException

UByteArrayHolder

UByteHolder

Client .NETで利用できるクラス

Client .NETで利用できるクラスの一覧を次に示します。

表6-1　Client .NETで利用できるクラスの一覧

名前空間 | クラス名 | 説明
Hitachi.OpenTP1.Client | DCRpcBindTbl | 通信先情報を管理するクラスです。CallToメソッドで使用します。
ErrAcceptCanceledException | Client .NETの各種例外クラスです。
ErrBufferOverflowException
ErrClientTimedOutException
ErrCollisionMessageException
ErrConnfreeException
ErrConnRefusedException
ErrFatalException
ErrHazardException
ErrHazardNoBeginException
ErrHeuristicException
ErrHeuristicNoBeginException
ErrHostUndefException
ErrInitializingException
ErrInvalidArgsException
ErrInvalidMessageException
ErrInvalidPortException
ErrInvalidReplyException
ErrIOErrException
ErrMarshalException
ErrMessageTooBigException
ErrNetDownAtClientException
ErrNetDownAtServerException
ErrNetDownException
ErrNoBeginException
ErrNoBufsAtServerException
ErrNoBufsException
ErrNoSuchServiceException
ErrNoSuchServiceGroupException
ErrNotTrnExtendException
ErrNotUpException
ErrProtoException
ErrReplyTooBigException
ErrRMException
ErrRollbackException
ErrRollbackNoBeginException
ErrSecchkException
ErrServerBusyException
ErrServerTimedOutException
ErrServiceClosedException
ErrServiceNotUpException
ErrServiceTerminatedException
ErrServiceTerminatingException
ErrSyserrAtServerException
ErrSyserrException
ErrTestmodeException
ErrTimedOutException
ErrTMException
ErrTrnchkException
ErrTrnchkExtendException
ErrVersionException
TP1Client | TP1/Serverのサーバに対してサービス要求を行うクラスです。
TP1ClientError | Client .NETで使用するエラーコードを定義するクラスです。
TP1ClientException | Client .NETが返すすべての例外のスーパークラスです。
TP1ClientFlags | Client .NETで使用するメソッドのパラメタで用いるフラグを定義するクラスです。
Hitachi.OpenTP1 | IntArrayHolder | System.Int32配列を保持するホルダークラスです。
IntHolder | System.Int32値を保持するホルダークラスです。
IRecordインタフェース | カスタムレコードが実装しなければならないレコード名，およびレコードの簡易説明のプロパティを規定します。
LongArrayHolder | System.Int64配列を保持するホルダークラスです。
LongHolder | System.Int64値を保持するホルダークラスです。
ShortArrayHolder | System.Int16配列を保持するホルダークラスです。
ShortHolder | System.Int16値を保持するホルダークラスです。
StringArrayHolder | System.String配列を保持するホルダークラスです。
StringHolder | System.Stringを保持するホルダークラスです。
TP1Error | クラスライブラリの各メソッドで返されるエラーや例外に設定されるエラーの値を定義したクラスです。
TP1Exception | OpenTP1のすべての例外の基底クラスです。
TP1MarshalException | 読み込みおよび書き込みできないバイト配列のインデクスが参照された場合，またはデータの内容が不正な場合に出力される例外です。
TP1RemoteException | SPP.NETで例外が発生したことをSPP.NET，SUP.NET，またはCUP.NETに知らせる例外です。
TP1RpcMethod | サービスメソッドカスタムパラメタです。
TP1UserException | SPP.NETのサービスメソッド内でユーザがスローする例外です。
UByteArrayHolder | System.Byte配列を保持するホルダークラスです。
UByteHolder | System.Byte値を保持するホルダークラスです。

DCRpcBindTbl

DCRpcBindTblの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- Hitachi.OpenTP1.Client.DCRpcBindTbl

説明

通信先情報を管理するクラスです。CallToメソッドで使用します。

コンストラクタの一覧

名称 | 説明
DCRpcBindTbl() | 通信先情報を管理するクラスのインスタンスを作成します。

コンストラクタの詳細

●DCRpcBindTbl

説明

通信先情報を管理するクラスのインスタンスを作成します。

宣言

【C#の場合】

public DCRpcBindTbl(
);

【Visual Basicの場合】

Public New( _
)

【J#の場合】

public DCRpcBindTbl(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
AUTO-METHOD. CONSTRUCTOR.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END AUTO-METHOD.

パラメタ

なし

例外

なし

ErrAcceptCanceledException

ErrAcceptCanceledExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrAcceptCanceledException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

一方通知受信待ち状態が解除されました。

ErrBufferOverflowException

ErrBufferOverflowExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrBufferOverflowException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

不正なメッセージを受信しました。メッセージ長またはセグメント情報が不正です。

ErrClientTimedOutException

ErrClientTimedOutExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrTimedOutException
         +- Hitachi.OpenTP1.Client.ErrClientTimedOutException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

Client .NET側でタイムアウトが発生しました。

ErrCollisionMessageException

ErrCollisionMessageExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrCollisionMessageException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

送受信メッセージの衝突が発生しました。

ErrConnfreeException

ErrConnfreeExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrConnfreeException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

Callメソッドがこの例外を返した場合
rapサーバとの常設コネクションが切断されました。

Beginメソッド，CommitChainedメソッド，RollbackChainedメソッド，Commitメソッド，またはRollbackメソッドがこの例外を返した場合
CUP.NET実行プロセス側から常設コネクションが解放されました。

Receiveメソッドがこの例外を返した場合
MHPからコネクションが解放されました。

ErrConnRefusedException

ErrConnRefusedExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrConnRefusedException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

リモートのアドレスおよびポートに対してソケットの接続を試行しているときに，エラーが発生したことを通知します。一般的には，接続がリモートで拒否された（リモートのアドレスとポートで待機中のプロセスがない）ことが原因です。

ErrFatalException

ErrFatalExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrFatalException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

Client .NET構成定義の指定に誤りがあります。

TP1/Serverとの通信環境の初期化に失敗しました。

ErrHazardException

ErrHazardExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrHazardException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあとも，このプロセスはトランザクション下にあり，グローバルトランザクションの範囲内です。

ErrHazardNoBeginException

ErrHazardNoBeginExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrHazardNoBeginException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。この例外が返されたあと，このプロセスはトランザクション下にありません。

ErrHeuristicException

ErrHeuristicExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrHeuristicException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

グローバルトランザクションがヒューリスティック決定であるため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあとも，このプロセスはトランザクション下にあり，グローバルトランザクションの範囲内です。

ErrHeuristicNoBeginException

ErrHeuristicNoBeginExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrHeuristicNoBeginException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

グローバルトランザクションがヒューリスティック決定であるため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。この例外が返されたあと，このプロセスはトランザクション下にありません。

ErrHostUndefException

ErrHostUndefExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrHostUndefException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

SetTP1Serverメソッドがこの例外を返した場合
hostパラメタの指定に誤りがあります。

OpenConnectionメソッドがこの例外を返した場合
rapリスナーのホスト名が，Client .NET構成定義の<TP1Server>要素に指定されていません。または，hostパラメタの指定に誤りがあります。

Callメソッドがこの例外を返した場合
通信先となるTP1/Serverのホスト名が，Client .NET構成定義の<TP1Server>要素に指定されていないか，または指定に誤りがあります。

Beginメソッドがこの例外を返した場合
通信先となるTP1/Serverのホスト名が，Client .NET構成定義の<TP1Server>要素に指定されていないか，または指定に誤りがあります。

Sendメソッドがこの例外を返した場合
hostnameパラメタの指定に誤りがあるか，またはhostnameパラメタとClient .NET構成定義の<tcpip>要素のsendHost属性の両方に，ホスト名が指定されていません。

ErrInitializingException

ErrInitializingExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrInitializingException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

サービス要求したノードにあるTP1/Serverは開始処理中です。

ErrInvalidArgsException

ErrInvalidArgsExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrInvalidArgsException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

メソッドのパラメタの指定に誤りがあります。

ErrInvalidMessageException

ErrInvalidMessageExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrInvalidMessageException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

不正なメッセージを受信しました。メッセージ長またはセグメント情報が不正です。

ErrInvalidPortException

ErrInvalidPortExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrInvalidPortException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

SetTP1Serverメソッド，OpenConnectionメソッド，またはBeginメソッドがこの例外を返した場合
portパラメタの指定に誤りがあります。

Callメソッドがこの例外を返した場合

リモートAPI機能を使用したRPCを行う場合，Client .NET構成定義の<rapService>要素のport属性が指定されていません。

スケジューラダイレクト機能を使用したRPCを行う場合，Client .NET構成定義の<scheduleService>要素のport属性が指定されていません。

ReceiveメソッドまたはSendメソッドがこの例外を返した場合
portnumパラメタの指定に誤りがあります。

ErrInvalidReplyException

ErrInvalidReplyExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrInvalidReplyException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

サービスメソッドまたはサービス関数が返した応答の長さが，1からDCRPC_MAX_MESSAGE_SIZEで指定した値までの範囲にありません。

ErrIOErrException

ErrIOErrExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrIOErrException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

何らかの入出力例外が発生しました。詳細は各メソッドの例外および注意事項を参照してください。

ErrMarshalException

ErrMarshalExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrMarshalException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

カスタムレコードのマーシャリング/アンマーシャリング処理に失敗しました。

ErrMessageTooBigException

ErrMessageTooBigExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrMessageTooBigException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

Callメソッドのin_lengthパラメタに指定した入力パラメタ長が，最大値を超えています。

ErrNetDownAtClientException

ErrNetDownAtClientExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNetDownException
         +- Hitachi.OpenTP1.Client.ErrNetDownAtClientException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

TP1/ServerとCUP.NETの間でネットワーク障害が発生しました。

ErrNetDownAtServerException

ErrNetDownAtServerExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNetDownException
         +- Hitachi.OpenTP1.Client.ErrNetDownAtServerException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

TP1/Serverと，SPP.NETまたはSPPとの間でネットワーク障害が発生しました。

ErrNetDownException

ErrNetDownExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNetDownException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

ネットワーク障害が発生しました。

通信先のTP1/Serverが稼働していません。

ErrNoBeginException

ErrNoBeginExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNoBeginException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

コミットまたはロールバック処理は正常に終了しましたが，新しいトランザクションは開始できませんでした。この例外が返されたあと，このプロセスはトランザクション下にありません。

ErrNoBufsAtServerException

ErrNoBufsAtServerExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNoBufsAtServerException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

指定したサービスでメモリ不足が発生しました。

ErrNoBufsException

ErrNoBufsExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNoBufsException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

メモリ不足が発生しました。

ErrNoSuchServiceException

ErrNoSuchServiceExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNoSuchServiceException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

serviceパラメタに指定したサービス名は定義されていません。

ErrNoSuchServiceGroupException

ErrNoSuchServiceGroupExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNoSuchServiceGroupException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

groupパラメタに指定したサービスグループ名は定義されていません。

ErrNotTrnExtendException

ErrNotTrnExtendExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrSyserrException
         +- Hitachi.OpenTP1.Client.ErrNotTrnExtendException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

トランザクション処理の連鎖RPCを使用したあとで，flagsパラメタにDCRPC_TPNOTRANを指定したサービスを要求しています。

ErrNotUpException

ErrNotUpExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrNotUpException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

指定したサービスが存在するノードのTP1/Serverが稼働していません。

ErrProtoException

ErrProtoExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrProtoException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

メソッドの発行順序に誤りがあります。

ErrReplyTooBigException

ErrReplyTooBigExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrReplyTooBigException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

サーバから返された応答の長さが，CUP.NETで用意した領域（out_dataパラメタの指定値）の長さを超えています。

ErrRMException

ErrRMExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrRMException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

リソースマネジャでエラーが発生しました。トランザクションは開始できませんでした。

ErrRollbackException

ErrRollbackExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrRollbackException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

現在のトランザクションは，コミットできないでロールバックしました。

CommitChainedメソッドでこの例外が返された場合
このプロセスはトランザクション下にあります。

Commitメソッドでこの例外が返された場合
このプロセスはトランザクション下にありません。

ErrRollbackNoBeginException

ErrRollbackNoBeginExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrRollbackNoBeginException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

コミットしようとしたトランザクションは，コミットできないでロールバックしました。新しいトランザクションは開始できませんでした。この例外が返されたあと，このプロセスはトランザクション下にありません。

ErrSecchkException

ErrSecchkExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrSecchkException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

サービス要求先のSPP.NETまたはSPPは，OpenTP1のセキュリティ機能で保護されています。サービス要求したCUP.NETには，SPP.NETまたはSPPへのアクセス権限がありません。

ErrServerBusyException

ErrServerBusyExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrServerBusyException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

サービス要求先のソケット受信型サーバが，サービス要求を受信できません。

ErrServerTimedOutException

ErrServerTimedOutExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrTimedOutException
         +- Hitachi.OpenTP1.Client.ErrServerTimedOutException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

TP1/Server側でサービスの実行中にタイムアウトが発生しました。

ErrServiceClosedException

ErrServiceClosedExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrServiceClosedException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

指定されたサービスが存在するサービスグループは閉塞されています。

ErrServiceNotUpException

ErrServiceNotUpExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrServiceNotUpException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

サービス要求したSPP.NETまたはSPPは稼働していません。

サービス要求したSPP.NETまたはSPPが処理を完了する前に異常終了しました。

ErrServiceTerminatedException

ErrServiceTerminatedExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrServiceTerminatedException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

サービス要求したSPP.NETまたはSPPが処理を完了する前に異常終了しました。

ErrServiceTerminatingException

ErrServiceTerminatingExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrServiceTerminatingException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

指定されたサービスは終了処理中です。

ErrSyserrAtServerException

ErrSyserrAtServerExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrSyserrAtServerException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

指定されたサービスでシステムエラーが発生しました。

ErrSyserrException

ErrSyserrExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrSyserrException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

システムエラーが発生しました。詳細については，「2.9.4　エラートレース，メモリトレース」を参照してください。

ErrTestmodeException

ErrTestmodeExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrTestmodeException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

テストモードのSPPに対してサービス要求を行いました。

ErrTimedOutException

ErrTimedOutExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrTimedOutException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

OpenConnectionメソッドがこの例外を返した場合
rapリスナーとのコネクションの確立中に，タイムアウトが発生しました。

CloseConnectionメソッドがこの例外を返した場合
rapリスナー，rapサーバとのコネクション切断中に，タイムアウトが発生しました。

Callメソッドがこの例外を返した場合
タイムアウトが発生しました。または，サービス要求先SPP.NETもしくはSPPが処理を終了する前に異常終了しました。

CommitChainedメソッド，RollbackChainedメソッド，Commitメソッド，Rollbackメソッド，またはReceiveメソッドがこの例外を返した場合
タイムアウトが発生しました。

ErrTMException

ErrTMExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrTMException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

トランザクションサービスでエラーが発生したため，トランザクションを開始できませんでした。なお，この例外が返されたあと，適当な時間を置いてから再度実行すると，トランザクションを開始できることがあります。

ErrTrnchkException

ErrTrnchkExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrTrnchkException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

ノード間負荷バランス機能を使用している環境で，複数のSPP.NETまたはSPPのトランザクション属性が一致していません。または，負荷を分散する先のノードにあるTP1/Serverのバージョンが，Client .NETのバージョンよりも古いため，ノード間負荷バランス機能を実行できません。

この例外は，ノード間負荷バランス機能を使っているSPP.NETまたはSPPにサービスを要求した場合にだけ返されます。

ErrTrnchkExtendException

ErrTrnchkExtendExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrSyserrException
         +- Hitachi.OpenTP1.Client.ErrTrnchkExtendException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次のどれかの要因が考えられます。

同時に起動できるトランザクションブランチの数を超えたため，トランザクションブランチを開始できません。

一つのトランザクションブランチから開始できる子トランザクションブランチの最大数を超えたため，トランザクションブランチを開始できません。

トランザクション内でドメイン修飾をしたサービス要求で，flagsパラメタにDCRPC_TPNOTRANを設定していません。

ErrVersionException

ErrVersionExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException
       +- Hitachi.OpenTP1.Client.ErrVersionException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

Client .NETが返す例外のクラスです。次の事象を表します。

通知元サーバのバージョンが不正です。

IntArrayHolder

IntArrayHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.IntArrayHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

IntArrayHolderクラスは，System.Int32配列を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public int[] Value {get; set;}

【Visual Basicの場合】

Public Property Value As Integer()

【J#の場合】

public int[] get_Value();
public void set_Value(int[]);

【COBOL言語の場合】

REPOSITORY.
 CLASS INT-ARRAY      AS 'System.Int32' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE INT-ARRAY.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE INT-ARRAY.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

IntHolder

IntHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.IntHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

IntHolderクラスは，System.Int32値を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public int Value {get; set;}

【Visual Basicの場合】

Public Property Value As Integer

【J#の場合】

public int get_Value();
public void set_Value(int);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-LONG.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

IRecordインタフェース

IRecordインタフェースの概要

名前空間

Hitachi.OpenTP1

継承関係

Hitachi.OpenTP1.IRecord

説明

カスタムレコードが実装しなければならないレコード名，およびレコードの簡易説明のプロパティを規定します。

メソッドの一覧

名称 | 説明
GetRecordName() | レコード名の取得を行います。
GetRecordShortDescription() | レコードの簡易説明の取得を行います。
SetRecordName(System.String) | レコード名の設定を行います。
SetRecordShortDescription(System.String) | レコードの簡易説明の設定を行います。

メソッドの詳細

●GetRecordName

説明

レコード名の取得を行います。

宣言

【C#の場合】

public abstract string GetRecordName(
);

【Visual Basicの場合】

Public MustOverride Function GetRecordName( _
) As String

【J#の場合】

public abstract System.String GetRecordName(
);

パラメタ

なし

戻り値

なし

例外

なし

注意事項

設定しているレコード名を返します。

●GetRecordShortDescription

説明

レコードの簡易説明の取得を行います。

宣言

【C#の場合】

public abstract string GetRecordShortDescription(
);

【Visual Basicの場合】

Public MustOverride Function GetRecordShortDescription( _
) As String

【J#の場合】

public abstract System.String GetRecordShortDescription(
);

パラメタ

なし

戻り値

なし

例外

なし

注意事項

レコードに設定されている簡易説明を返します。

●SetRecordName

説明

レコード名の設定を行います。

宣言

【C#の場合】

public abstract void SetRecordName(
 string recordName
);

【Visual Basicの場合】

Public MustOverride Sub SetRecordName( _
 ByVal recordName As String _
)

【J#の場合】

public abstract void SetRecordName(
 System.String recordName
);

パラメタ

recordName

新たに設定するレコード名称。

戻り値

なし

例外

なし

●SetRecordShortDescription

説明

レコードの簡易説明の設定を行います。

宣言

【C#の場合】

public abstract void SetRecordShortDescription(
 string recordShortDescription
);

【Visual Basicの場合】

Public MustOverride Sub SetRecordShortDescription( _
 ByVal recordShortDescription As String _
)

【J#の場合】

public abstract void SetRecordShortDescription(
 System.String recordShortDescription
);

パラメタ

recordShortDescription

新たに設定するレコードの簡易説明。

戻り値

なし

例外

なし

LongArrayHolder

LongArrayHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.LongArrayHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

LongArrayHolderクラスは，System.Int64配列を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public long[] Value {get; set;}

【Visual Basicの場合】

Public Property Value As Long()

【J#の場合】

public long[] get_Value();
public void set_Value(long[]);

【COBOL言語の場合】

REPOSITORY.
 CLASS LONG-ARRAY      AS 'System.Int64' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE LONG-ARRAY.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE LONG-ARRAY.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

LongHolder

LongHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.LongHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

LongHolderクラスは，System.Int64値を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public long Value {get; set;}

【Visual Basicの場合】

Public Property Value As Long

【J#の場合】

public long get_Value();
public void set_Value(long);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-DOUBLE.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-DOUBLE.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

ShortArrayHolder

ShortArrayHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.ShortArrayHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

ShortArrayHolderクラスは，System.Int16配列を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public short[] Value {get; set;}

【Visual Basicの場合】

Public Property Value As Short()

【J#の場合】

public short[] get_Value();
public void set_Value(short[]);

【COBOL言語の場合】

REPOSITORY.
 CLASS SHORT-ARRAY      AS 'System.Int16' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE SHORT-ARRAY.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE SHORT-ARRAY.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

ShortHolder

ShortHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.ShortHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

ShortHolderクラスは，System.Int16値を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public short Value {get; set;}

【Visual Basicの場合】

Public Property Value As Short

【J#の場合】

public short get_Value();
public void set_Value(short);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-SHORT.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-SHORT.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

StringArrayHolder

StringArrayHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.StringArrayHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

StringArrayHolderクラスは，System.String配列を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public string[] Value {get; set;}

【Visual Basicの場合】

Public Property Value As String()

【J#の場合】

public System.String[] get_Value();
public void set_Value(System.String[]);

【COBOL言語の場合】

REPOSITORY.
 CLASS STR-ARRAY      AS 'System.String' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE STR-ARRAY.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE STR-ARRAY.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

StringHolder

StringHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.StringHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

StringHolderクラスは，System.String値を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public string Value {get; set;}

【Visual Basicの場合】

Public Property Value As String

【J#の場合】

public System.String get_Value();
public void set_Value(System.String);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE STRING.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE STRING.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

TP1Client

TP1Clientの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- Hitachi.OpenTP1.Client.TP1Client

説明

TP1/Serverのサーバに対してサービス要求を行うクラスです。

コンストラクタの一覧

名称 | 説明
TP1Client() | TP1/ServerのサーバにRPCを行うTP1Clientクラスのインスタンスを作成します。

フィールドの一覧

名称 | 説明
DCRPC_MAX_MESSAGE_SIZE | RPC送受信メッセージの最大長を指定します。指定できる最大値は1048576バイトです。

メソッドの一覧

名称
説明

AcceptNotification(System.Byte[], System.Int32&, System.Int32, System.Int32, System.Byte[], System.Byte[])
サーバ側の関数（dc_rpc_cltsend関数）で通知されるメッセージを，timeout引数で指定した時間まで待ち続けます。

AcceptNotificationChained(System.Byte[], System.Int32&, System.Int32, System.Byte[], System.Byte[])
サーバ側の関数（dc_rpc_cltsend関数）で通知されるメッセージを，timeout引数で指定した時間まで待ち続けます。

Begin()
グローバルトランザクションを，Beginメソッドを呼び出すTP1Clientオブジェクトから開始します。

Call(System.String, System.String, System.Byte[], System.Int32, System.Byte[], System.Int32&, System.Int32)
SPP.NETまたはSPPのサービスを要求します。

CallTo(Hitachi.OpenTP1.Client.DCRpcBindTbl, System.String, System.String, System.Byte[], System.Int32, System.Byte[], System.Int32&, System.Int32)
Callメソッドと同様に，SPP.NETまたはSPPのサービスを要求します。
CallToメソッドでは，サービスグループ名，サービス名，およびホスト名を検索のキーにして，該当するサービスメソッドまたはサービス関数をサービスの要求先に限定します。

CancelNotification(System.Byte[], System.Int32, System.String, System.Int32)
サーバからの一方通知受信待ち状態（AcceptNotificationメソッド，またはAcceptNotificationChainedメソッドの発行）を解除します。

CloseConnection()
CUP.NETとrapリスナーおよびrapサーバとの間で確立されている常設コネクションを切断します。

CloseNotification()
一方通知連続受信機能を使用するための環境を削除します。

CloseRpc()
TP1/ServerのSPP.NETまたはSPPを呼び出すための環境を解放します。

Commit()
トランザクションの同期点を取得します。
Commitメソッドが正常に終了すると，グローバルトランザクションは終了します。
グローバルトランザクションの範囲外からは，SPP.NETまたはSPPをトランザクションとして実行できません。

CommitChained()
トランザクションの同期点を取得します。
CommitChainedメソッドが正常終了すると新しいグローバルトランザクションが発生し，以降実行するメソッドは新しいグローバルトランザクションの範囲になります。

CreateScdDirectObject(System.String, System.Int32, System.Int32)
通信先スケジューラのホスト名およびポート番号を設定したDCRpcBindTblを作成します。

GetTransactionID(System.Byte[], System.Byte[])
現在のトランザクショングローバル識別子およびトランザクションブランチ識別子を取得します。

GetTransactionInfo()
GetTransactionInfoメソッドを呼び出したTP1Clientオブジェクトが，現在トランザクションとして稼働しているかどうかを報告します。

OpenConnection()
Client .NET構成定義の<TP1Server>要素および<rapService>要素のport属性で指定されたrapサーバとの間に常設コネクションを確立します。

OpenConnection(System.String, System.Int32)
リモートAPI機能を使用したRPCを行うために，CUP.NETとrapリスナーおよびrapサーバとの間に常設コネクションを確立します。

OpenNotification(System.Int32)
一方通知連続受信機能を使用するための環境を作成します。

OpenRpc()
TP1/ServerのSPP.NETまたはSPPを呼び出すための環境を初期化します。

OpenRpc(System.String)
TP1/ServerのSPP.NETまたはSPPを呼び出すための環境を初期化します。

Receive(System.Byte[], System.Int32&, System.Int32, System.Int32)
MHPが送信したメッセージを受信します。

ReceiveAssembledMessage(System.Byte[], System.Int32&, System.Int32, System.Int32)
受信メッセージの組み立て機能を使用してメッセージを受信します。

Rollback()
トランザクションをロールバックします。
Rollbackメソッドを呼び出すと，グローバルトランザクションは終了します。
グローバルトランザクションの範囲外からは，SPP.NETまたはSPPをトランザクションとして実行できません。

RollbackChained()
トランザクションをロールバックします。
RollbackChainedメソッドが正常終了すると，新しいグローバルトランザクションが発生し，以降呼び出すメソッドは新しいグローバルトランザクションの範囲になります。

Send(System.Byte[], System.Int32, System.String, System.Int32, System.Int32)
MHPにメッセージを送信します。

SendAssembledMessage(System.Byte[], System.Int32, System.String, System.Int32, System.Int32, System.Int32)
受信メッセージの組み立て機能を使用してメッセージを送信します。

SetConnectInformation(System.Byte[] inf, System.Int16 inf_len)
端末識別情報を設定します。

SetDataTraceMode(System.String, System.Int32, System.Int32, System.Boolean)
データトレースを取得するかどうかを指定します。

SetErrorTraceMode(System.String, System.Int32, System.Boolean)
エラートレースを取得するかどうかを指定します。

SetExtendLevel(System.Int32)
Client .NETの機能の拡張レベルを指定します。

SetMethodTraceMode(System.String, System.Int32, System.Boolean)
メソッドトレースを取得するかどうかを指定します。

SetRapDelay(System.Int32)
rapサーバとCUP.NET間の通信遅延時間を設定します。

SetRapInquireTime(System.Int32)
CUP.NETがサーバに対して問い合わせを行ってから，次の問い合わせをするまでの間隔の最大時間を設定します。

SetRpcExtend(System.Int32)
Client .NETから発行するRPCの機能拡張オプションを指定します。

SetRpcWatchTime(System.Int32)
同期応答型RPCの場合に，CUP.NETからSPP.NETまたはSPPへサービス要求を送ってからサービスの応答が返るまでの最大応答待ち時間を設定します。

SetTP1Server(System.String, System.Int32)
窓口となるTP1/Serverのホスト名とポート番号を設定します。

SetTraceArray(System.String[])
パラメタに指定された配列にエラートレースを取得するかどうかを指定します。

SetUapTraceMode(System.String, System.Int32, System.Boolean)
UAPトレースを取得するかどうかを指定します。

コンストラクタの詳細

●TP1Client

説明

TP1/ServerのサーバにRPCを行うTP1Clientクラスのインスタンスを作成します。

宣言

【C#の場合】

public TP1Client(
);

【Visual Basicの場合】

Public New( _
)

【J#の場合】

public TP1Client(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
AUTO-METHOD. CONSTRUCTOR.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END AUTO-METHOD.

パラメタ

なし

例外

なし

フィールドの詳細

●DCRPC_MAX_MESSAGE_SIZE

説明

RPC送受信メッセージの最大長を指定します。指定できる最大値は1048576バイトです。

宣言

【C#の場合】

public const int DCRPC_MAX_MESSAGE_SIZE

【Visual Basicの場合】

Public Const DCRPC_MAX_MESSAGE_SIZE As Integer

【J#の場合】

public static final int DCRPC_MAX_MESSAGE_SIZE

【COBOL言語の場合】

COBOL言語から定数値のフィールドを使用する場合は，「付録B　Client .NETで利用できるクラスのフィールド」を参照して，対応する値を指定してください。

メソッドの詳細

●AcceptNotification

説明

サーバ側の関数（dc_rpc_cltsend関数）によって通知されるメッセージを，timeout引数に指定した時間まで待ち続けます。メッセージを受信した時点でCUP.NETに制御を戻し，通知メッセージ，通知メッセージ長，通知元サーバのホスト名，および通知元サーバのノード識別子を返します。

宣言

【C＃の場合】

public void AcceptNotification(
   byte[] inf,
   ref int inf_len,
   int port,
   int timeout,
   byte[] hostname,
   byte[] nodeid
);

【Visual Basicの場合】

Public Sub AcceptNotification( _
   ByVal inf() As Byte, _
   ByRef inf_len As Integer, _
   ByVal port As Integer, _
   ByVal timeout As Integer, _
   ByVal hostname() As Byte, _
   ByVal nodeid() As Byte _
)

【J#の場合】

public void AcceptNotification(
   ubyte[] inf,
   int inf_len,
   int port,
   int timeout,
   ubyte[] hostname,
   ubyte[] nodeid
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. AcceptNotification PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 inf           USAGE OBJECT REFERENCE BYTE-ARRAY.
01 inf_len       USAGE BINARY-LONG.
01 port          USAGE BINARY-LONG.
01 timeout       USAGE BINARY-LONG.
01 hostname      USAGE OBJECT REFERENCE BYTE-ARRAY.
01 nodeid        USAGE OBJECT REFERENCE BYTE-ARRAY.
PROCEDURE DIVISION USING BY VALUE inf BY REFERENCE inf_len
                       BY VALUE port BY VALUE timeout
                       BY VALUE hostname BY VALUE nodeid.
END METHOD AcceptNotification.

パラメタ

inf

サーバからの通知メッセージを格納する領域を指定します。

メソッドが正常終了した場合，サーバからの通知メッセージが格納されます。

inf_len

サーバからの通知メッセージを格納する領域の長さ（inf引数の長さ）を指定します。0からDCRPC_MAX_MESSAGE_SIZEの範囲で指定します。

ただし，Client .NET構成定義の<rpc>要素のmaxMessageSize属性に2以上を指定した場合，指定できる最大値は，DCRPC_MAX_MESSAGE_SIZEの値（1メガバイト）ではなく，Client .NET構成定義の<rpc>要素のmaxMessageSize属性に指定した値になります。

メソッドが正常終了した場合，サーバからの通知メッセージ長が格納されます。

port

サーバからの通知メッセージを受信するポート番号を，5001から65535の範囲で指定します。

同一マシン内で，複数のプロセス，または複数のスレッドを同時に実行する場合，port引数にはそれぞれ異なるポート番号を指定してください。また，port引数に指定できるポート番号でも，OS，またはほかのプログラムが使用するポート番号は指定しないでください。指定した場合，応答データを正しく受信できないことがあります。なお，OSが使用するポート番号は，OSごとに異なります。OSが使用するポート番号については，ご利用のOSの関連ドキュメントを参照してください。

timeout

タイムアウト値を，0から65535（単位：秒）の範囲で指定します。0を指定した場合，無限に待ち続けます。

hostname

通知してきたサーバのホスト名を格納する領域を指定します。256バイト以上を指定してください。

メソッドが正常終了した場合，通知元サーバのホスト名が格納されます。Client .NETは，通知元サーバのIPアドレスからSystem.Net.IPHostEntryクラスのオブジェクトを作成し，そのオブジェクトのHostNameプロパティからホスト名を取得します。取得したホスト名は，プラットフォームのデフォルト文字セットを使用して，バイト配列に変換されます。この結果が，hostnameに格納されます。通知元サーバのIPアドレスからホスト名への変換に失敗した場合，10進ドット記法（例：10.209.15.124）のIPアドレスをhostnameに格納します。

nullを指定した場合は，通知してきたサーバのホスト名を格納しません。

nodeid

通知してきたサーバのノード識別子を格納する領域を指定します。8バイト以上を指定してください。

メソッドが正常終了した場合，通知元サーバのノード識別子が格納されます。ノード識別子のフォーマットは，次のとおりです。

戻り値

なし

例外

ErrInvalidArgsException

メソッドの引数の指定に誤りがあります。

ErrProtoException

OpenRpcメソッドが実行されていません。

ErrIOErrException

何らかの入出力例外が発生しました。

ErrInvalidPortException

port引数で指定したポート番号は使用中です。

ErrClientTimedOutException

Client .NETでタイムアウトが発生しました。

ErrNetDownAtClientException

TP1/ServerとCUP.NETの間でネットワーク障害が発生しました。

ErrInvalidMessageException

不正なメッセージを受信しました。

ErrAcceptCanceledException

一方通知受信待ち状態がCancelNotificationによって解除されました。このときinf引数，inf_len引数，およびhostname引数にはすでに値が設定されています。nodeid引数には，先頭から8バイト目まで0で初期化された値が設定されます。

ErrReplyTooBigException

受信したメッセージが，CUP.NETで用意した領域に収まりません。収まらないメッセージは切り捨てました。このとき，hostname引数およびnodeid引数には，すでに値が設定されています。

ErrVersionException

通知元サーバのバージョンが不正です。

ErrSyserrException

システムエラーが発生しました。

●AcceptNotificationChained

説明

サーバ側の関数（dc_rpc_cltsend関数）によって通知されるメッセージを，timeout引数で指定した時間まで待ち続けます。メッセージを受信した時点でCUP.NETに制御を戻し，通知メッセージ，通知メッセージ長，通知元サーバのホスト名，および通知元サーバのノード識別子を返します。このメソッドを発行するときは，あらかじめOpenNotificationメソッドを発行しておく必要があります。このメソッドは，OpenNotificationメソッドからCloseNotificationメソッドまでの間で発行できます。

宣言

【C#の場合】

public void AcceptNotificationChained(
   byte[] inf,
   ref int inf_len,
   int timeout,
   byte[] hostname,
   byte[] nodeid
);

【Visual Basicの場合】

Public Sub AcceptNotificationChained( _
   ByVal inf() As Byte, _
   ByRef inf_len As Integer, _
   ByVal timeout As Integer, _
   ByVal hostname() As Byte, _
   ByVal nodeid() As Byte _
)

【J#の場合】

public void AcceptNotificationChained(
   ubyte[] inf,
   int inf_len,
   int timeout,
   ubyte[] hostname,
   ubyte[] nodeid
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. AcceptNotificationChained PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 inf           USAGE OBJECT REFERENCE BYTE-ARRAY.
01 inf_len       USAGE BINARY-LONG.
01 timeout       USAGE BINARY-LONG.
01 hostname      USAGE OBJECT REFERENCE BYTE-ARRAY.
01 nodeid        USAGE OBJECT REFERENCE BYTE-ARRAY.
PROCEDURE DIVISION USING BY VALUE inf BY REFERENCE inf_len
                       BY VALUE timeout BY VALUE hostname
                       BY VALUE nodeid.
END METHOD AcceptNotificationChained.

パラメタ

inf

サーバからの通知メッセージを格納する領域を指定します。

メソッドが正常終了した場合，サーバからの通知メッセージが格納されます。

inf_len

サーバからの通知メッセージを格納する領域の長さ（inf引数の長さ）を指定します。0からDCRPC_MAX_MESSAGE_SIZEの範囲で指定します。

ただし，Client .NET構成定義の<rpc>要素のmaxMessageSize属性に2以上を指定した場合，指定できる最大値はDCRPC_MAX_MESSAGE_SIZEの値（1メガバイト）ではなく，Client .NET構成定義の<rpc>要素のmaxMessageSize属性に指定した値になります。

メソッドが正常終了した場合，サーバからの通知メッセージ長が格納されます。

timeout

タイムアウト値を，0から65535（単位：秒）の範囲で指定します。0を指定した場合，無限に待ち続けます。

hostname

通知してきたサーバのホスト名を格納する領域を指定します。256バイト以上を指定してください。

メソッドが正常終了した場合，通知元サーバのホスト名が格納されます。Client .NETは，通知元サーバのIPアドレスからSystem.Net.IPHostEntryクラスのオブジェクトを作成し，そのオブジェクトのHostNameプロパティからホスト名を取得します。取得したホスト名は，プラットフォームのデフォルト文字セットを使用して，バイト配列に変換されます。この結果が，hostnameに格納されます。通知元サーバのIPアドレスからホスト名への変換に失敗した場合，10進ドット記法（例：10.209.15.124）のIPアドレスをhostnameに格納します。

nullを指定した場合，通知してきたサーバのホスト名を格納しません。

nodeid

通知してきたサーバのノード識別子を格納する領域を指定します。8バイト以上を指定してください。

メソッドが正常終了した場合，通知元サーバのノード識別子が格納されます。

ノード識別子のフォーマットは，次のとおりです。

戻り値

なし

例外

ErrInvalidArgsException

メソッドの引数の指定に誤りがあります。

ErrProtoException

OpenNotificationメソッドが実行されていません。

ErrIOErrException

何らかの入出力例外が発生しました。

ErrClientTimedOutException

Client .NETでタイムアウトが発生しました。

ErrNetDownAtClientException

TP1/ServerとCUP.NETの間でネットワーク障害が発生しました。

ErrInvalidMessageException

不正なメッセージを受信しました。

ErrAcceptCanceledException

一方通知受信待ち状態がCancelNotificationメソッドによって解除されました。このとき，inf引数，inf_len引数，およびhostname引数には，すでに値が設定されています。nodeid引数は，先頭から8バイト目まで0で初期化された値が設定されます。

ErrReplyTooBigException

受信したメッセージが，CUP.NETで用意した領域に収まりません。収まらないメッセージは切り捨てました。このとき，hostname引数およびnodeid引数には，すでに値が設定されています。

ErrVersionException

通知元サーバのバージョンが不正です。

ErrSyserrException

システムエラーが発生しました。

●Begin

説明

グローバルトランザクションを，Beginメソッドを呼び出すTP1Clientオブジェクトから開始します。

このメソッドは，リモートAPI機能を使用する場合で，要求先TP1/Server Baseのバージョンが05-00以降のときだけ使用できます。

宣言

【C#の場合】

public void Begin(
);

【Visual Basicの場合】

Public Sub Begin( _
)

【J#の場合】

public void Begin(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. Begin PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD Begin.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrProtoException

Beginメソッドを不正なコンテキストから呼び出しています。

Hitachi.OpenTP1.Client.ErrTMException

トランザクションサービスでエラーが発生したため，トランザクションは開始できませんでした。

この例外が返されたあと，適当な時間を置いてから再度このメソッドを呼び出すと，トランザクションを開始できることがあります。

Hitachi.OpenTP1.Client.ErrRMException

リソースマネジャでエラーが発生しました。トランザクションは開始できませんでした。

Hitachi.OpenTP1.Client.ErrNoBufsException

メモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNotUpException

TP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrTimedOutException

タイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrConnfreeException

CUP.NET実行プロセス側から常設コネクションが解放されました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrHostUndefException

通信先となるTP1/Serverのホスト名が，Client .NET構成定義の<TP1Server>要素に指定されていないか，または指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrInvalidPortException

通信先ポートが不正か，または設定されていません。

●Call

説明

SPP.NETまたはSPPのサービスを要求します。

サービスグループ名とサービス名の組み合わせで識別されるサービスメソッドまたはサービス関数を呼び出し，その応答を受け取ります。このメソッドを呼び出したときに，目的のサービスグループが閉塞されているとErrServiceClosedExceptionが返されます。

flagsパラメタにDCRPC_TPNOTRANを指定すると，トランザクションの処理からのRPCをトランザクションの処理ではないサービス要求にできます。

このメソッドを呼び出したときに，目的のサービスグループがdcsvstopコマンドなどで終了処理中，または終了している場合は，ErrServiceTerminatingException，ErrServiceClosedException，またはErrNoSuchServiceGroupExceptionのどれかが返されます。どの例外が返されるかは，このメソッドを呼び出したタイミングによって異なります。

ソケット受信型サーバでは，ユーザサービス定義のmax_socket_msgおよびmax_socket_msglenオペランドの指定でメッセージの輻輳制御を行っています。そのためサーバがサービス要求を受信できない場合があります。この場合，メソッドを呼び出すとErrServerBusyExceptionが返されます。

この例外が返されたあと，適当な時間を置いてから再度このメソッドを呼び出すと，サービスを要求できることがあります。

宣言

【C#の場合】

public void Call(
 string group,
 string service,
 byte[] in_data,
 int in_length,
 byte[] out_data,
 ref int out_length,
 int flags
);

【Visual Basicの場合】

Public Sub Call( _
 ByVal group As String, _
 ByVal service As String, _
 ByVal in_data() As Byte, _
 ByVal in_length As Integer, _
 ByVal out_data() As Byte, _
 ByRef out_length As Integer, _
 ByVal flags As Integer _
)

【J#の場合】

public void Call(
 System.String group,
 System.String service,
 ubyte[] in_data,
 int in_length,
 ubyte[] out_data,
 int out_length,
 int flags
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. Call PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 group         USAGE STRING.
01 service       USAGE STRING.
01 in_data       USAGE OBJECT REFERENCE BYTE-ARRAY.
01 in_length     USAGE BINARY-LONG.
01 out_data      USAGE OBJECT REFERENCE BYTE-ARRAY.
01 out_length    USAGE BINARY-LONG.
01 flags         USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE group BY VALUE service
                 BY VALUE in_data BY VALUE in_length
                 BY VALUE out_data BY REFERENCE out_length
                 BY VALUE flags.
END METHOD Call.

パラメタ

group

サービスグループ名を，1から31文字の識別子で指定します。

service

サービス名を，1から31文字の識別子で指定します。

in_data

サービスの入力パラメタを指定します。

in_length

サービスの入力パラメタの応答領域長を，1からDCRPC_MAX_MESSAGE_SIZEの指定値までの範囲で指定します。

out_data

サービスメソッドまたはサービス関数で指定した応答が返される領域を指定します。

非応答型RPCの場合はnullを指定します。非応答型RPCの場合，null以外の値を指定しても何も格納されません。

out_length

サービスの応答の長さを，1からDCRPC_MAX_MESSAGE_SIZEの指定値までの範囲で指定します。

サービス要求終了時，SPP.NETのサービスメソッド，またはSPPのサービス関数で指定した応答の長さがout_lengthパラメタに設定されます。

非応答型RPCの場合，応答の長さを指定しても無視され，サービス要求終了時，out_lengthパラメタには何も設定されません。

flags

RPCの形態を指定します。

DCNOFLAGS：同期応答型RPC

DCRPC_NOREPLY：非応答型RPC

DCRPC_CHAINED：連鎖RPC

DCRPC_TPNOTRAN：トランザクションを引き継がないRPC
このフラグを指定すると，トランザクションの処理からのRPCは，トランザクションの処理にしないサービス要求になります。このフラグはDCNOFLAGS，DCRPC_NOREPLY，またはDCRPC_CHAINEDと組み合わせて指定できます。

【指定例】

flags = TP1ClientFlags.DCNOFLAGS
       |TP1ClientFlags.DCRPC_TPNOTRAN;

DCNOFLAGSまたはDCRPC_CHAINEDを指定すると，サーバから応答が返されるか，Client .NET構成定義の<rpc>要素のWatchTime属性で指定した最大応答待ち時間が経過してタイムアウトするまで，このメソッドは制御を戻しません。ただし，サービス要求先のSPP.NETまたはSPPが異常終了した場合は，すぐに例外を返します。この場合，Client .NET構成定義の<rpc>要素のWatchTime属性で指定した値によって，次の例外を返します。

1～65535の値を指定した場合：ErrTimedOutException

0を指定した場合：ErrServiceNotUpException

DCRPC_NOREPLYを指定すると，要求したサービスは応答を返さないサービスと見なされます。この場合，このメソッドはサービスの実行終了を待たないですぐに制御を戻します。このフラグを指定した場合，応答（out_dataパラメタの指定値）と応答の長さ（out_lengthパラメタの指定値）は参照できません。さらに，サービスメソッドまたはサービス関数が実行されたかどうかはCUP.NET側からはわかりません。

DCRPC_CHAINEDを指定すると，同じサービスグループに属するサービスを複数回要求する場合は，最初の要求時と同一のプロセスで実行されます。

連鎖RPCを使用する場合，次に示す制限があります。

2回目以降のこのメソッドの呼び出しの場合
ユーザサーバおよびサービスの閉塞を検出できません。

2回目以降のこのメソッドの呼び出しで，サービスメソッドまたはサービス関数の処理に異常が発生した場合
サービス単位ではなく，ユーザサーバ全体が閉塞します。

flagsパラメタにDCRPC_CHAINEDを指定して呼び出したサービスの場合
最後のサービス要求ではDCNOFLAGSを指定してRPCを実行する必要があります。最後のサービス要求でDCNOFLAGSを指定しないでCloseConnectionメソッドを呼び出すと，ErrTimedOutException，またはほかの例外を返します。また，サービスを実行していたプロセスは，連鎖RPCがタイムアウトするまでプロセスを占有されます。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。この場合，詳細メッセージに誤っているパラメタ名が設定されます。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。OpenConnectionメソッドが呼び出されていません。

Hitachi.OpenTP1.Client.ErrNoBufsException

メモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。または，通信先のTP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrTimedOutException

このメソッドの処理でタイムアウトが発生しました。または，サービス要求先のSPP.NETもしくはSPPが処理を完了する前に異常終了しました。

Hitachi.OpenTP1.Client.ErrMessageTooBigException

in_lengthパラメタに指定した入力パラメタ長が最大値を超えています。

Hitachi.OpenTP1.Client.ErrReplyTooBigException

サーバから返された応答の長さが，CUP.NETで用意した領域（out_dataパラメタの指定値）の長さを超えています。

Hitachi.OpenTP1.Client.ErrNoSuchServiceGroupException

groupパラメタに指定したサービスグループ名は定義されていません。

Hitachi.OpenTP1.Client.ErrNoSuchServiceException

serviceパラメタに指定したサービス名は定義されていません。

Hitachi.OpenTP1.Client.ErrServiceClosedException

serviceパラメタに指定したサービス名が存在するサービスグループは閉塞されています。

Hitachi.OpenTP1.Client.ErrServiceTerminatingException

serviceパラメタに指定したサービスは終了処理中です。

Hitachi.OpenTP1.Client.ErrServiceNotUpException

サービス要求したSPP.NETもしくはSPPは稼働していません。または，サービス要求したSPP.NETもしくはSPPが処理を完了する前に異常終了しました。

この例外は，Client .NET構成定義の<rpc>要素のWatchTime属性に0を指定した（応答を無限に待つ）場合に返されます。

Hitachi.OpenTP1.Client.ErrNotUpException

指定したサービスが存在するノードのTP1/Serverが稼働していません。

この場合，異常終了，停止中，終了処理中，またはネットワーク障害の発生が考えられます。

Hitachi.OpenTP1.Client.ErrSyserrAtServerException

指定したサービスでシステムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrNoBufsAtServerException

指定したサービスでメモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrInvalidReplyException

サービスメソッドまたはサービス関数が返した応答の長さが，1からDCRPC_MAX_MESSAGE_SIZEで指定した値までの範囲にありません。

Hitachi.OpenTP1.Client.ErrInitializingException

サービス要求したノードにあるTP1/Serverは開始処理中です。

Hitachi.OpenTP1.Client.ErrTrnchkException

ノード間負荷バランス機能を使用している環境で，複数のSPP.NETまたはSPPのトランザクション属性が一致していません。または，負荷を分散する先のノードにあるTP1/Serverのバージョンが，Client .NETのバージョンよりも古いため，ノード間負荷バランス機能を実行できません。

この例外は，ノード間負荷バランス機能を使用しているSPP.NETまたはSPPにサービス要求した場合だけ返されます。

Hitachi.OpenTP1.Client.ErrNotTrnExtendException

トランザクション処理の連鎖RPCを使用したあとで，flagsパラメタにDCRPC_TPNOTRANを指定したサービスを要求しています。

Hitachi.OpenTP1.Client.ErrTrnchkExtendException

次のどれかの要因が考えられます。

同時に起動できるトランザクションブランチの数を超えたため，トランザクションブランチを開始できない。

一つのトランザクションブランチから開始できる子トランザクションブランチの最大数を超えたため，トランザクションブランチを開始できない。

トランザクション内でドメイン修飾をしたサービス要求で，flagsパラメタにDCRPC_TPNOTRANを設定していない。

Hitachi.OpenTP1.Client.ErrServerBusyException

サービス要求先のソケット受信型サーバが，サービス要求を受信できません。

Hitachi.OpenTP1.Client.ErrSecchkException

サービス要求先のSPP.NETまたはSPPは，セキュリティ機能で保護されています。Callメソッドを呼び出したCUP.NETには，SPP.NETまたはSPPへのアクセス権限がありません。

Hitachi.OpenTP1.Client.ErrServiceTerminatedException

サービス要求したSPP.NETまたはSPPが，処理を完了する前に異常終了しました。

この例外はrapサービス定義のrpc_extend_functionオペランドに00000001を指定した場合だけ返されます。

rpc_extend_functionオペランドに00000000を指定，またはオペランドを省略した場合は，ErrTimedOutExceptionまたはErrServiceNotUpExceptionが返されます。

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。rapサーバが問い合わせ間隔の時間監視でタイムアウトし，コネクションを切断したことも考えられます。

Hitachi.OpenTP1.Client.ErrTestmodeException

テストモードのSPPに対してサービス要求を行いました。

Hitachi.OpenTP1.Client.ErrConnfreeException

rapサーバとの常設コネクションが切断されました。

Hitachi.OpenTP1.Client.ErrHostUndefException

通信先となるTP1/Serverのホスト名がClient .NET構成定義の<TP1Server>要素に指定されていないか，または指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrInvalidPortException

次の要因が考えられます。

リモートAPI機能を使用したRPCを行う場合，Client .NET構成定義で<rapService>要素のport属性が指定されていない。

スケジューラダイレクト機能を使用したRPCを行う場合，Client .NET構成定義で<scheduleService>要素のport属性が指定されていない。

注意事項

入力パラメタ（in_dataパラメタの指定値）と，サービスメソッドまたはサービス関数の応答（out_dataパラメタの指定値）に同じ領域を指定しないでください。

flagsパラメタにDCRPC_NOREPLYを指定した場合，次の例外は返されません。

発生しない例外
ErrReplyTooBigException
ErrInvalidReplyException

発生しても検出できない例外
ErrNoSuchServiceException
ErrServiceClosedException
ErrServiceTerminatingException
ErrSyserrAtServerException
ErrNoBufsAtServerException
ErrNotUpException

ErrTimedOutExceptionが返される場合，次に示す要因が考えられます。

Client .NET構成定義またはTP1/Serverの定義で指定した最大応答待ち時間が短い。

サービス要求先のSPP.NETから発行したサービスメソッド，またはSPPから発行したサービス関数が異常終了した。

サービス要求先のSPP.NETまたはSPPが存在するノードに障害が発生した。

サービス要求先のSPP.NETまたはSPPの処理完了前に異常終了した。

ネットワーク障害が発生した。

上記の場合，サービス要求先のSPP.NETまたはSPPから開始したトランザクションの処理はコミットされて，データが更新されていることがあります。データが更新されているかどうか確認してください。

このメソッドの呼び出し時，何らかの障害が発生した場合には例外が返されますが，その障害によってrapリスナーおよびrapサーバとの常設コネクションが切断されたかどうかは，その時点では判断できません。この場合，再びこのメソッドを呼び出すと，rapリスナーおよびrapサーバとの常設コネクションが切断されていれば，ErrConnfreeExceptionが返されます。

このメソッドの呼び出し時，何らかの障害でrapリスナーおよびrapサーバとの常設コネクションが切断された場合は，再びOpenConnectionメソッドを呼び出してrapリスナーおよびrapサーバとの常設コネクションを確立する必要があります。

オートコネクトモードを使用した常設コネクションの場合，サービス要求送信時にrapサーバとのネットワーク障害が発生すると，一度だけリトライ処理を行います。リトライしてもコネクションが確立されない場合は，ErrNetDownExceptionが返されます。

スケジューラダイレクト機能を使用したRPC，およびネームサービスを使用したRPCでは，flagsパラメタにDCRPC_CHAINEDを指定できません。

●CallTo

説明

Callメソッドと同様に，SPP.NETまたはSPPのサービスを要求します。

CallToメソッドでは，サービスグループ名，サービス名，およびホスト名を検索のキーにして，該当するサービスメソッドまたはサービス関数をサービスの要求先に限定します。

このメソッドを呼び出す前にCreateScdDirectObjectメソッドを呼び出し，DCRpcBindTblインスタンスを作成しておく必要があります。

それ以外のインタフェースは，Callメソッドと同じです。

宣言

【C#の場合】

public void CallTo(
 Hitachi.OpenTP1.Client.DCRpcBindTbl direction,
 string group,
 string service,
 byte[] in_data,
 int in_length,
 byte[] out_data,
 ref int out_length,
 int flags
);

【Visual Basicの場合】

Public Sub CallTo( _
 ByVal direction As Hitachi.OpenTP1.Client.DCRpcBindTbl, _
 ByVal group As String, _
 ByVal service As String, _
 ByVal in_data() As Byte, _
 ByVal in_length As Integer, _
 ByVal out_data() As Byte, _
 ByRef out_length As Integer, _
 ByVal flags As Integer _
)

【J#の場合】

public void CallTo(
 Hitachi.OpenTP1.Client.DCRpcBindTbl direction,
 System.String group,
 System.String service,
 ubyte[] in_data,
 int in_length,
 ubyte[] out_data,
 int out_length,
 int flags
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.
 CLASS DCRPC-BINDTBL   AS 'Hitachi.OpenTP1.Client.DCRpcBindTbl'.

IDENTIFICATION DIVISION.
METHOD-ID. CallTo PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 direction     USAGE OBJECT REFERENCE DCRPC-BINDTBL.
01 group         USAGE STRING.
01 service       USAGE STRING.
01 in_data       USAGE OBJECT REFERENCE BYTE-ARRAY.
01 in_length     USAGE BINARY-LONG.
01 out_data      USAGE OBJECT REFERENCE BYTE-ARRAY.
01 out_length    USAGE BINARY-LONG.
01 flags         USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE direction BY VALUE group BY VALUE service
                       BY VALUE in_data BY VALUE in_length
                       BY VALUE out_data BY REFERENCE out_length BY VALUE flags.
END METHOD CallTo.

パラメタ

direction

DCRpcBindTblオブジェクトを指定します。

このメソッドを呼び出す前にCreateScdDirectObjectメソッドを呼び出し，通信先情報を設定しておきます。

group

サービスグループ名を1から31文字の識別子で指定します。

service

サービス名を1から31文字の識別子で指定します。

in_data

サービスの入力パラメタを指定します。

in_length

サービスの入力パラメタの応答領域長を，1からDCRPC_MAX_MESSAGE_SIZEの指定値までの範囲で指定します。

out_data

サービスメソッドまたはサービス関数で指定した応答が返される領域を指定します。

非応答型RPCの場合はnullを指定します。非応答型RPCの場合，null以外の値を指定しても何も格納されません。

out_length

サービスの応答の長さを，1からDCRPC_MAX_MESSAGE_SIZEの指定値までの範囲で指定します。

flags

RPCの形態を指定します。

DCNOFLAGS：同期応答型RPC

DCRPC_NOREPLY：非応答型RPC

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。詳細メッセージに誤ったパラメタ名が設定されます。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。OpenConnectionメソッドが呼び出されていません。

Hitachi.OpenTP1.Client.ErrNoBufsException

メモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。または，通信先のTP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrTimedOutException

このメソッドの処理でタイムアウトが発生しました。または，サービス要求先のSPP.NETもしくはSPPが処理を完了する前に異常終了しました。

Hitachi.OpenTP1.Client.ErrMessageTooBigException

in_lengthパラメタに指定した入力パラメタ長が最大値を超えています。

Hitachi.OpenTP1.Client.ErrReplyTooBigException

サーバから返された応答の長さが，CUP.NETで用意した領域（out_dataパラメタの指定値）の長さを超えています。

Hitachi.OpenTP1.Client.ErrNoSuchServiceGroupException

groupパラメタに指定したサービスグループ名は定義されていません。

Hitachi.OpenTP1.Client.ErrNoSuchServiceException

serviceパラメタに指定したサービス名は定義されていません。

Hitachi.OpenTP1.Client.ErrServiceClosedException

serviceパラメタに指定したサービス名が存在するサービスグループは閉塞されています。

Hitachi.OpenTP1.Client.ErrServiceTerminatingException

serviceパラメタに指定したサービスは終了処理中です。

Hitachi.OpenTP1.Client.ErrServiceNotUpException

サービス要求したSPP.NETもしくはSPPは稼働していません。または，サービス要求したSPP.NETもしくはSPPが処理を完了する前に異常終了しました。

この例外は，Client .NET構成定義の<rpc>要素のWatchTime属性に0を指定した（応答を無限に待つ）場合に返されます。

Hitachi.OpenTP1.Client.ErrNotUpException

指定したサービスが存在するノードのTP1/Serverが稼働していません。

この場合，異常終了，停止中，終了処理中，またはネットワーク障害の発生が考えられます。

Hitachi.OpenTP1.Client.ErrSyserrAtServerException

指定したサービスでシステムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrNoBufsAtServerException

指定したサービスでメモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrInvalidReplyException

サービスメソッドまたはサービス関数が返した応答の長さが，1からDCRPC_MAX_MESSAGE_SIZEで指定した値までの範囲にありません。

Hitachi.OpenTP1.Client.ErrInitializingException

サービス要求したノードにあるTP1/Serverは開始処理中です。

Hitachi.OpenTP1.Client.ErrTrnchkException

ノード間負荷バランス機能を使用している環境で，複数のSPP.NETまたはSPPのトランザクション属性が一致していません。または，負荷を分散する先のノードにあるTP1/Serverのバージョンが，Client .NETのバージョンよりも古いため，ノード間負荷バランス機能を実行できません。

この例外は，ノード間負荷バランス機能を使用しているSPP.NETまたはSPPにサービス要求した場合だけ返されます。

Hitachi.OpenTP1.Client.ErrNotTrnExtendException

トランザクション処理の連鎖RPCを使用したあとで，flagsパラメタにDCRPC_TPNOTRANを指定したサービスを要求しています。

Hitachi.OpenTP1.Client.ErrTrnchkExtendException

次のどれかの要因が考えられます。

同時に起動できるトランザクションブランチの数を超えたため，トランザクションブランチを開始できない。

一つのトランザクションブランチから開始できる子トランザクションブランチの最大数を超えたため，トランザクションブランチを開始できない。

トランザクション内でドメイン修飾をしたサービス要求で，flagsパラメタにDCRPC_TPNOTRANを設定していない。

Hitachi.OpenTP1.Client.ErrServerBusyException

サービス要求先のソケット受信型サーバが，サービス要求を受信できません。

Hitachi.OpenTP1.Client.ErrSecchkException

サービス要求先のSPP.NETまたはSPPは，セキュリティ機能で保護されています。Callメソッドを呼び出したCUP.NETには，SPP.NETまたはSPPへのアクセス権限がありません。

Hitachi.OpenTP1.Client.ErrServiceTerminatedException

サービス要求したSPP.NETまたはSPPが，処理を完了する前に異常終了しました。

この例外は，rapサービス定義のrpc_extend_functionオペランドに00000001を指定した場合だけ返されます。

rpc_extend_functionオペランドに00000000を指定，またはオペランドを省略した場合は，ErrTimedOutExceptionまたはErrServiceNotUpExceptionが返されます。

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。rapサーバが問い合わせ間隔の時間監視でタイムアウトし，コネクションを切断したことも考えられます。

Hitachi.OpenTP1.Client.ErrTestmodeException

テストモードのSPPに対してサービス要求を行いました。

Hitachi.OpenTP1.Client.ErrConnfreeException

rapサーバとの常設コネクションが切断されました。

Hitachi.OpenTP1.Client.ErrHostUndefException

通信先となるTP1/Serverのホスト名がClient .NET構成定義の<TP1Server>要素に指定されていないか，または指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrInvalidPortException

次の要因が考えられます。

リモートAPI機能を使用したRPCを行う場合
Client .NET構成定義の<rapService>要素のport属性が指定されていない。

スケジューラダイレクト機能を使用したRPCを行う場合
Client .NET構成定義の<scheduleService>要素のport属性が指定されていない。

注意事項

ソケット受信型のユーザサーバにサービス要求を行った場合，このメソッドは，ErrServiceNotUpExceptionを返します。

サービス要求先のTP1/Serverのバージョンは，03-03以降でなければなりません。これ以前のバージョンのTP1/Serverをサービス要求先に指定した場合は，動作の保証はできません。

このメソッドは，リモートAPI機能を使用したRPCでは使用できません。リモートAPI機能を使用しているときにこのメソッドを発行した場合，このメソッドは，ErrProtoExceptionを返します。

このメソッドは，連鎖RPCでは使用できません。flagsパラメタにDCRPC_CHAINEDを指定した場合，このメソッドはErrInvalidArgsExceptionを返します。

CallToメソッドの呼び出し時は，Client .NET構成定義の次のオペランドは参照されません。

<TP1Server>要素

<nameService>要素のport属性

<scheduleService>要素のport属性，およびusePriority属性

また，SetTP1Serverメソッドで指定されたホスト名およびポート番号も参照されません。

これらの指定値は，次回Callメソッドの呼び出し時に有効になります。

サービス要求先のホスト名に誤りがあった場合，このメソッドはErrHostUndefExceptionを返します。

サービス要求先のポート番号に誤りがあった場合，このメソッドはErrInvalidPortExceptionを返します。

●CancelNotification

説明

サーバからの一方通知受信待ち状態（AcceptNotificationメソッド，またはAcceptNotificationChainedメソッドの発行）を解除します。解除するときに，inf引数に指定したメッセージを，一方通知受信待ち状態のCUP.NETに通知できます。

宣言

【C#の場合】

public void CancelNotification(
 byte[] inf,
 int inf_len,
 string hostname,
 int port
);

【Visual Basicの場合】

Public Sub CancelNotification( _
 ByVal inf() As Byte, _
 ByVal inf_len As Integer, _
 ByVal hostname As String, _
 ByVal port As Integer _
)

【J#の場合】

public void CancelNotification(
 ubyte[] inf,
 int inf_len,
 System.String hostname,
 int port
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. CancelNotification PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 inf           USAGE OBJECT REFERENCE BYTE-ARRAY.
01 inf_len       USAGE BINARY-LONG.
01 hostname      USAGE STRING.
01 port          USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE inf BY VALUE inf_len
                       BY VALUE hostname BY VALUE port.
END METHOD CancelNotification.

パラメタ

inf

CUP.NETに通知するメッセージを指定します。

inf_len

CUP.NETに通知するメッセージ長（inf引数の長さ）を指定します。0からDCRPC_MAX_MESSAGE_SIZEの範囲で指定します。0を指定した場合はCUP.NETにメッセージを通知しません。

ただし，Client .NET構成定義の<rpc>要素のmaxMessageSize属性に2以上を指定した場合，指定できる最大値はDCRPC_MAX_MESSAGE_SIZEの値（1メガバイト）ではなく，Client .NET構成定義の<rpc>要素のmaxMessageSize属性に指定した値になります。

hostname

一方通知受信待ち状態のCUP.NETが存在するホスト名を指定します。ホスト名として，10進ドット記法（例：10.209.15.124）のIPアドレスを指定することもできます。

port

一方通知受信待ち状態のCUP.NETのポート番号を，5001から65535の範囲で指定します。

戻り値

なし

例外

ErrInvalidArgsException

メソッドの引数の指定に誤りがあります。

ErrProtoException

OpenRpcメソッドが実行されていません。

ErrIOErrException

何らかの入出力例外が発生しました。

ErrInvalidPortException

port引数で指定したポート番号が不正です。

ErrClientTimedOutException

Client .NETでタイムアウトが発生しました。

ErrNetDownAtClientException

CUP.NET間でネットワーク障害が発生しました。

ErrHostUndefException

hostname引数で指定したホスト名が不正です。

ErrSyserrException

システムエラーが発生しました。

●CloseConnection

説明

CUP.NETとrapリスナーおよびrapサーバとの間で確立されている常設コネクションを切断します。

宣言

【C#の場合】

public void CloseConnection(
);

【Visual Basicの場合】

Public Sub CloseConnection( _
)

【J#の場合】

public void CloseConnection(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. CloseConnection PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD CloseConnection.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。

すでにコネクションが切断されている状態で，再度CloseConnectionメソッドが呼び出されました。

Hitachi.OpenTP1.Client.ErrTimedOutException

rapリスナー，rapサーバとのコネクション切断中に，タイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrNetDownException

rapリスナーとの通信でネットワーク障害が発生しました。

注意事項

このメソッドが例外を返した場合でも，常設コネクションは切断されています。

●CloseNotification

説明

一方通知連続受信機能を使用するための環境を削除します。このメソッドは，OpenNotificationメソッドと対で発行します。OpenNotificationメソッドが正常終了した場合は，必ずこのメソッドを発行してください。

宣言

【C#の場合】

public void CloseNotification(
);

【Visual Basicの場合】

Public Sub CloseNotification( _
)

【J#の場合】

public void CloseNotification(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. CloseNotification PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD CloseNotification.

パラメタ

なし

戻り値

なし

例外

ErrNetDownAtClientException

TP1/ServerとCUP.NETの間でネットワーク障害が発生しました。

ErrSyserrException

システムエラーが発生しました。

●CloseRpc

説明

TP1/ServerのSPP.NETまたはSPPを呼び出すための環境を解放します。

TP1/ServerのSPP.NETまたはSPPに対して再度サービス呼び出しを行う場合は，OpenRpcメソッドを呼び出します。

CUP.NETの実行の最後にこのメソッドを呼び出します。

宣言

【C#の場合】

public void CloseRpc(
);

【Visual Basicの場合】

Public Sub CloseRpc( _
)

【J#の場合】

public void CloseRpc(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. CloseRpc PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD CloseRpc.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

●Commit

説明

トランザクションの同期点を取得します。

Commitメソッドが正常に終了すると，グローバルトランザクションは終了します。

グローバルトランザクションの範囲外からは，SPP.NETまたはSPPをトランザクションとして実行できません。

宣言

【C#の場合】

public void Commit(
);

【Visual Basicの場合】

Public Sub Commit( _
)

【J#の場合】

public void Commit(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. Commit PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD Commit.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrProtoException

Commitメソッドを不正なコンテキストから呼び出しています。

Hitachi.OpenTP1.Client.ErrRollbackException

現在のトランザクションは，コミットできないでロールバックしました。

プロセスはトランザクションの範囲外です。

Hitachi.OpenTP1.Client.ErrHeuristicException

Commitメソッドを実行したグローバルトランザクションは，ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあと，このプロセスはトランザクション下にありません。

プロセスはグローバルトランザクションの範囲外です。

Hitachi.OpenTP1.Client.ErrHazardException

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。

しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあと，このプロセスはトランザクション下にありません。プロセスはグローバルトランザクションの範囲外です。

Hitachi.OpenTP1.Client.ErrNoBufsException

メモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNotUpException

TP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrTimedOutException

タイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrConnfreeException

CUP.NET実行プロセス側から常設コネクションが解放されました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

●CommitChained

説明

トランザクションの同期点を取得します。

CommitChainedメソッドが正常終了すると新しいグローバルトランザクションが発生し，以降実行するメソッドは新しいグローバルトランザクションの範囲になります。

宣言

【C#の場合】

public void CommitChained(
);

【Visual Basicの場合】

Public Sub CommitChained( _
)

【J#の場合】

public void CommitChained(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. CommitChained PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD CommitChained.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrProtoException

CommitChainedメソッドを不正なコンテキストから呼び出しています。

Hitachi.OpenTP1.Client.ErrRollbackException

現在のトランザクションはコミットできないでロールバックしました。

この例外が返されたあとも，このプロセスはトランザクション下にあり，グローバルトランザクションの範囲内です。

Hitachi.OpenTP1.Client.ErrHeuristicException

CommitChainedメソッドを実行したグローバルトランザクションは，ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあとも，このプロセスはトランザクション下にあり，グローバルトランザクションの範囲内です。

Hitachi.OpenTP1.Client.ErrHazardException

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあとも，このプロセスはトランザクション下にあり，グローバルトランザクションの範囲内です。

Hitachi.OpenTP1.Client.ErrNoBeginException

コミットまたはロールバック処理は正常に終了しましたが，新しいトランザクションは開始できませんでした。

この例外が返されたあと，このプロセスはトランザクション下にありません。

Hitachi.OpenTP1.Client.ErrRollbackNoBeginException

コミットしようとしたトランザクションは，コミットできないでロールバックしました。

新しいトランザクションは開始できませんでした。

この例外が返されたあと，このプロセスはトランザクション下にありません。

Hitachi.OpenTP1.Client.ErrHeuristicNoBeginException

CommitChainedメソッドを呼び出したグローバルトランザクションは，ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。新しいトランザクションは開始できませんでした。

この例外が返されたあと，このプロセスはトランザクション下にありません。

Hitachi.OpenTP1.Client.ErrHazardNoBeginException

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。

しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。

この例外が返されたあと，このプロセスはトランザクション下にありません。

Hitachi.OpenTP1.Client.ErrNoBufsException

メモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNotUpException

TP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrTimedOutException

タイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrConnfreeException

CUP.NET実行プロセス側から常設コネクションが解放されました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

●CreateScdDirectObject

説明

通信先スケジューラのホスト名およびポート番号を設定したDCRpcBindTblを作成します。

宣言

【C#の場合】

public Hitachi.OpenTP1.Client.DCRpcBindTbl
CreateScdDirectObject(
 string host,
 int scdport,
 int flags
);

【Visual Basicの場合】

Public Function CreateScdDirectObject( _
 ByVal host As String, _
 ByVal scdport As Integer, _
 ByVal flags As Integer _
) As Hitachi.OpenTP1.Client.DCRpcBindTbl

【J#の場合】

public Hitachi.OpenTP1.Client.DCRpcBindTbl
CreateScdDirectObject(
 System.String host,
 int scdport,
 int flags
);

【COBOL言語の場合】

REPOSITORY.
 CLASS DCRPC-BINDTBL   AS 'Hitachi.OpenTP1.Client.DCRpcBindTbl'.

IDENTIFICATION DIVISION.
METHOD-ID. CreateScdDirectObject PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 host          USAGE STRING.
01 scdport       USAGE BINARY-LONG.
01 flags         USAGE BINARY-LONG.
01 RESULT        USAGE OBJECT REFERENCE DCRPC-BINDTBL.
PROCEDURE DIVISION USING BY VALUE host BY VALUE scdport BY VALUE flags
                       RETURNING RESULT.
END METHOD CreateScdDirectObject.

パラメタ

host

通信先スケジュールサーバのホスト名を指定します。

不正なホスト名，およびnullが指定された場合，このメソッドのあとに呼び出すCallToメソッドは，ErrHostUndefExceptionを返します。

scdport

通信先スケジュールサーバのポート番号を指定します。

ポート番号は，5001から65535までの範囲で指定します。

不正なポート番号が指定された場合，このメソッドのあとに呼び出すCallToメソッドは，ErrInvalidPortExceptionを返します。

flags

DCNOFLAGSを指定します。

戻り値

DCRpcBindTblオブジェクト。

例外

なし

●GetTransactionID

説明

現在のトランザクショングローバル識別子およびトランザクションブランチ識別子を取得します。

このメソッドは内部の変数を参照するだけで，rapサーバとは通信しません。

現在のトランザクショングローバル識別子およびトランザクションブランチ識別子は，次に示すメソッドを呼び出してトランザクションが起動したときに，TP1/Serverが割り当てたものです。

Beginメソッド

CommitChainedメソッド

RollbackChainedメソッド

宣言

【C#の場合】

public void GetTransactionID(
 byte[] trngid,
 byte[] trnbid
);

【Visual Basicの場合】

Public Sub GetTransactionID( _
 ByVal trngid() As Byte, _
 ByVal trnbid() As Byte _
)

【J#の場合】

public void GetTransactionID(
 ubyte[] trngid,
 ubyte[] trnbid
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. GetTransactionID PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 trngid       USAGE OBJECT REFERENCE BYTE-ARRAY.
01 trnbid       USAGE OBJECT REFERENCE BYTE-ARRAY.
PROCEDURE DIVISION USING BY VALUE trngid BY VALUE trnbid.
END METHOD GetTransactionID.

パラメタ

trngid

トランザクショングローバル識別子を格納する，16バイト以上のbyte型配列を指定します。

trnbid

トランザクションブランチ識別子を格納する，16バイト以上のbyte型配列を指定します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrProtoException

GetTransactionIDメソッドを不正なコンテキストから呼び出しています。

●GetTransactionInfo

説明

GetTransactionInfoメソッドを呼び出したTP1Clientオブジェクトが，現在トランザクションとして稼働しているかどうかを報告します。

このメソッドは内部の変数を参照するだけで，rapサーバとは通信しません。

宣言

【C#の場合】

public System.Boolean GetTransactionInfo(
);

【Visual Basicの場合】

Public Function GetTransactionInfo( _
) As System.Boolean

【J#の場合】

public System.Boolean GetTransactionInfo(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GetTransactionInfo PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 RESULT        USAGE LOGICAL.
PROCEDURE DIVISION RETURNING RESULT.
END METHOD GetTransactionInfo.

パラメタ

なし

戻り値

true

GetTransactionInfoメソッドを呼び出したTP1Clientオブジェクトは，トランザクションの範囲内にあります。

false

GetTransactionInfoメソッドを呼び出したTP1Clientオブジェクトは，トランザクションの範囲外にあります。

例外

なし

●OpenConnection

説明

Client .NET構成定義の<TP1Server>要素および<rapService>要素のport属性で指定されたrapサーバとの間に常設コネクションを確立します。なお，一つのCUP.NETから，同時に複数の常設コネクションを確立することはできません。

CUP.NETと接続要求先rapリスナーとの間にファイアウォールがある場合は，接続要求先rapリスナーにはファイアウォールのホスト名とポート番号を指定してください。

宣言

【C#の場合】

public void OpenConnection(
);

【Visual Basicの場合】

Public Sub OpenConnection( _
)

【J#の場合】

public void OpenConnection(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. OpenConnection PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD OpenConnection.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrHostUndefException

rapリスナーのホスト名が，Client .NET構成定義の<TP1Server>要素に指定されていません。

Hitachi.OpenTP1.Client.ErrTimedOutException

rapリスナーとのコネクション確立中にタイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrNetDownException

rapリスナーとの通信でネットワーク障害が発生しました。

または，通信先のTP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrNoBufsException

rapリスナー，rapサーバでメモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNotUpException

rapリスナー，rapサーバが稼働していません。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。

すでにコネクションを確立している状態で，再度OpenConnectionメソッドが呼び出されました。

Hitachi.OpenTP1.Client.ErrInvalidPortException

rapリスナーのポートが定義されていません。

注意事項

接続先のrapリスナーが起動していない場合，ErrIOErrExceptionまたはErrNetDownExceptionが返されます。

このメソッドが例外を返した場合，常設コネクションは確立されていません。

●OpenConnection

説明

リモートAPI機能を使用したRPCを行うために，CUP.NETとrapリスナーおよびrapサーバとの間に常設コネクションを確立します。

常設コネクションの確立先はパラメタで指定された値を使用します。

宣言

【C#の場合】

public void OpenConnection(
 string host,
 int port
);

【Visual Basicの場合】

Public Sub OpenConnection( _
 ByVal host As String, _
 ByVal port As Integer _
)

【J#の場合】

public void OpenConnection(
 System.String host,
 int port
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. OpenConnection PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 host          USAGE STRING.
01 port          USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE host BY VALUE port.
END METHOD OpenConnection.

パラメタ

host

rapリスナーまたはファイアウォールのホスト名を指定します。

port

rapリスナーまたはファイアウォールのポート番号を，5001から65535までの範囲で指定します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrHostUndefException

hostパラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrTimedOutException

rapリスナーとのコネクション確立中にタイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrNoBufsException

rapリスナー，rapサーバでメモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNotUpException

指定されたサービスがあるノードのTP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrInvalidPortException

portパラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。

すでにコネクションを確立している状態で，再度OpenConnectionメソッドが呼び出されました。

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrNetDownException

rapリスナーとの通信でネットワーク障害が発生しました。

または，通信先のTP1/Serverが稼働していません。

注意事項

接続先のrapリスナーが起動していない場合，ErrIOErrExceptionまたはErrNetDownExceptionが返されます。

このメソッドが例外を返した場合，常設コネクションは確立されていません。

●OpenNotification

説明

一方通知連続受信機能を使用するための環境を作成します。このメソッドは，CloseNotificationメソッドと対で発行します。このメソッドが正常終了した場合は，必ずCloseNotificationメソッドを発行してください。

宣言

【C#の場合】

public void OpenNotification(
int port
);

【Visual Basicの場合】

Public Sub OpenNotification( _
ByVal port As Integer _
)

【J#の場合】

public void OpenNotification(
int port
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. OpenNotification PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 port          USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE port.
END METHOD OpenNotification.

パラメタ

port

サーバからの通知メッセージを受信するポート番号を，5001から65535の範囲で指定します。

同一マシン内で，複数のプロセス，または複数のスレッドを同時に実行する場合，port引数にはそれぞれ異なるポート番号を指定してください。また，port引数に指定できるポート番号でも，OS，またはほかのプログラムが使用するポート番号は指定しないでください。指定した場合，応答データを正しく受信できないことがあります。なお，OSが使用するポート番号は，OSごとに異なります。OSが使用するポート番号については，ご利用のOSの関連ドキュメントを参照してください。

戻り値

なし

例外

ErrInvalidArgsException

メソッドの引数の指定に誤りがあります。

ErrProtoException

OpenRpcメソッドが実行されていない，あるいはOpenNotificationメソッドがすでに実行されています。

ErrInvalidPortException

port引数で指定したポート番号は，すでに使用されています。

ErrNetDownAtClientException

TP1/ServerとCUP.NETの間でネットワーク障害が発生しました。

ErrSyserrException

システムエラーが発生しました。

●OpenRpc

説明

TP1/ServerのSPP.NETまたはSPPを呼び出すための環境を初期化します。

CUP.NETを実行するときは，最初にこのメソッドを呼び出します。

宣言

【C#の場合】

public void OpenRpc(
);

【Visual Basicの場合】

Public Sub OpenRpc( _
)

【J#の場合】

public void OpenRpc(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. OpenRpc PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD OpenRpc.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。

CloseRpcメソッドが呼び出されないで，再度OpenRpcメソッドが呼び出されました。

Hitachi.OpenTP1.Client.ErrFatalException

Client .NET構成定義の指定に誤りがあります。

または，TP1/Serverとの通信環境の初期化に失敗しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

●OpenRpc

説明

TP1/ServerのSPP.NETまたはSPPを呼び出すための環境を初期化します。

CUP.NETを実行するときは，最初にこのメソッドを呼び出します。

宣言

【C#の場合】

public void OpenRpc(
 string profileId
);

【Visual Basicの場合】

Public Sub OpenRpc( _
 ByVal profileId As String _
)

【J#の場合】

public void OpenRpc(
 System.String profileId
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. OpenRpc PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 profileId     USAGE STRING.
PROCEDURE DIVISION USING BY VALUE profileId.
END METHOD OpenRpc.

パラメタ

profileId

プロファイルIDを指定します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。

CloseRpcメソッドを呼び出さないで，再度OpenRpcメソッドが呼び出されました。

Hitachi.OpenTP1.Client.ErrFatalException

Client .NET構成定義に誤りがあります。

または，TP1/Serverとの通信環境の初期化に失敗しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

●Receive

説明

MHPが送信したメッセージを受信します。

Receiveメソッドを実行する場合，Client .NET構成定義の<tcpip>要素のtype属性にrecvまたはsendrecvを指定して，OpenRpcメソッドをあらかじめ実行しておく必要があります。

宣言

【C#の場合】

public void Receive(
 byte[] buff,
 ref int recvleng,
 int timeout,
 int flags
);

【Visual Basicの場合】

Public Sub Receive( _
 ByVal buff() As Byte, _
 ByRef recvleng As Integer, _
 ByVal timeout As Integer, _
 ByVal flags As Integer _
)

【J#の場合】

public void Receive(
 ubyte[] buff,
 int recvleng,
 int timeout,
 int flags
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. Receive PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 buff         USAGE OBJECT REFERENCE BYTE-ARRAY.
01 recvleng     USAGE BINARY-LONG.
01 timeout      USAGE BINARY-LONG.
01 flags        USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE buff BY REFERENCE recvleng
                       BY VALUE timeout BY VALUE flags.
END METHOD Receive.

パラメタ

buff

受信したメッセージを格納する領域を指定します。

recvlengで指定する長さ以上の領域を指定してください。

メソッド実行後は受信したメッセージが返されます。

recvleng

受信するメッセージの長さを指定します。

メソッド実行後は受信したメッセージの長さが返されます。

timeout

メッセージ受信時の最大待ち時間を，-1から65535までの整数（単位：秒）で指定します。

-1を指定した場合は，メッセージを受信するまで無制限に待ちます。

0を指定した場合は，メッセージの受信を待ちません。受信するメッセージがなかった場合は，ErrTimedOutExceptionが返されます。

1から65535の値を指定した場合は，指定した秒数だけメッセージの受信を待ちます。指定した時間を過ぎてもメッセージを受信できない場合は，ErrTimedOutExceptionが返されます。

flags

メッセージ受信後に，コネクションを解放するかどうかを指定します。

DCNOFLAGS：メッセージ受信後，コネクションを解放しません。
DCNOFLAGSを指定した場合は，障害時を除き，CloseRpcメソッドを実行するまでコネクションを解放しません。

DCCLT_RCV_CLOSE：メッセージ受信後，コネクションを解放します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrProtoException

OpenRpcメソッドが実行されていません。または，OpenRpcメソッドは実行されていますが，Client .NET構成定義の<tcpip>要素のtype属性にrecvまたはsendrecvを指定していません。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrTimedOutException

メッセージ受信時にタイムアウトしました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrInvalidPortException

受信用portの指定に誤りがあります。

この例外は，Client .NET構成定義の<tcpip>要素のopenPortAtRecv属性にtrueを指定し，recvPort属性に指定したポートがすでに使用中の場合に発生します。

openPortAtRecv属性にfalseを指定した場合は，OpenRpcメソッドがErrFatalExceptionを返します。

Hitachi.OpenTP1.Client.ErrConnfreeException

MHPからコネクションが解放されました。

注意事項

Receiveメソッドは，次に示す場合にCUP.NETに制御を戻します。

MHPからrecvlengパラメタで指定した長さ分のメッセージを受信した場合

MHPからのメッセージ受信時に，タイムアウトが発生した場合

MHPからコネクションが解放された場合

ネットワーク障害が発生した場合

Receiveメソッドの発行時に，MHPからコネクションが解放された場合，ErrConnfreeExceptionでエラーリターンします。

●ReceiveAssembledMessage

説明

受信メッセージの組み立て機能を使用してメッセージを受信します。ReceiveAssembledMessageメソッドを実行する場合，Client .NET構成定義の<tcpip>要素のtype属性にrecvまたはsendrecvを指定して，OpenRpcメソッドをあらかじめ実行しておく必要があります。

受信メッセージの組み立て機能を使用した場合，メッセージの先頭4バイトは，buff引数に指定されたバッファに格納されません。このメソッドが正常終了した場合，recvlengの長さのユーザデータを含むメッセージを受信し，ユーザデータがbuff[0]～buff[recvleng－1]に格納されます。

宣言

【C#の場合】

public void ReceiveAssembledMessage(
 byte[] buff,
 ref int recvleng,
 int timeout,
 int flags
);

【Visual Basicの場合】

Public Sub ReceiveAssembledMessage( _
 ByVal buff() As Byte, _
 ByRef recvleng As Integer, _
 ByVal timeout As Integer, _
 ByVal flags As Integer _
)

【J#の場合】

public void ReceiveAssembledMessage(
 ubyte[] buff,
 int recvleng,
 int timeout,
 int flags
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. ReceiveAssembledMessage PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 buff         USAGE OBJECT REFERENCE BYTE-ARRAY.
01 recvleng     USAGE BINARY-LONG.
01 timeout      USAGE BINARY-LONG.
01 flags        USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE buff BY REFERENCE recvleng
                       BY VALUE timeout BY VALUE flags.
END METHOD ReceiveAssembledMessage.

パラメタ

buff

受信したメッセージを格納する領域を指定します。

受信するメッセージの長さ以上の領域を指定してください。

recvleng

メソッド実行後に，受信したメッセージの長さがrecvlengに返されます。

timeout

メッセージ受信時の最大待ち時間を，-1から65535までの整数（単位：秒）で指定します。

-1を指定した場合は，メッセージを受信するまで無制限に待ちます。

0を指定した場合は，メッセージの受信を待ちません。受信するメッセージがなかった場合は，ErrTimedOutExceptionが返されます。

1から65535を指定した場合は，指定した秒数だけメッセージの受信を待ちます。指定した秒数を過ぎてもメッセージを受信できない場合は，ErrTimedOutExceptionが返されます。

flags

メッセージ受信後に，コネクションを解放するかどうかを指定します。

DCNOFLAGS：メッセージ受信後，コネクションを解放しません。
DCNOFLAGSを指定した場合は，障害時を除き，CloseRpcメソッドを実行するまでコネクションを解放しません。

DCCLT_RCV_CLOSE：メッセージ受信後，コネクションを解放します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrProtoException

OpenRpcメソッドが実行されていません。または，OpenRpcメソッドは実行されていますが，Client .NET構成定義の<tcpip>要素のtype属性にrecvまたはsendrecvを指定していません。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrTimedOutException

メッセージ受信時にタイムアウトしました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrInvalidPortException

受信用portの指定に誤りがあります。

この例外は，Client .NET構成定義の<tcpip>要素のopenPortAtRecv属性にtrueを指定し，recvPort属性に指定したポートがすでに使用中の場合に発生します。

openPortAtRecv属性にfalseを指定した場合は，OpenRpcメソッドがErrFatalExceptionを返します。

Hitachi.OpenTP1.Client.ErrConnfreeException

MHPからコネクションが解放されました。

注意事項

ReceiveAssembledMessageメソッドは，次に示す場合にCUP.NETに制御を戻します。

メッセージ受信が完了した場合

不正なメッセージ長のメッセージを受信した場合

不正なセグメント情報のメッセージを受信した場合

buffパラメタで指定した長さを超えるメッセージを受信した場合

メッセージ受信時に，タイムアウトが発生した場合

相手システムからコネクションが解放された場合

ネットワーク障害が発生した場合

ReceiveAssembledMessageメソッドの発行時に，MHPからコネクションが解放された場合，ErrConnfreeExceptionでエラーリターンします。

●Rollback

説明

トランザクションをロールバックします。

Rollbackメソッドを呼び出すと，グローバルトランザクションは終了します。

グローバルトランザクションの範囲外からは，SPP.NETまたはSPPをトランザクションとして実行できません。

宣言

【C#の場合】

public void Rollback(
);

【Visual Basicの場合】

Public Sub Rollback( _
)

【J#の場合】

public void Rollback(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. Rollback PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD Rollback.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrProtoException

Rollbackメソッドを不正なコンテキストから呼び出しています。

Hitachi.OpenTP1.Client.ErrHeuristicException

Rollbackメソッドを実行したグローバルトランザクションは，ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあと，このプロセスはトランザクション下にありません。プロセスはグローバルトランザクションの範囲外です。

Hitachi.OpenTP1.Client.ErrHazardException

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。

しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあと，このプロセスはトランザクション下にありません。プロセスはグローバルトランザクションの範囲外です。

Hitachi.OpenTP1.Client.ErrNoBufsException

メモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNotUpException

TP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrTimedOutException

タイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrConnfreeException

CUP.NET実行プロセス側から常設コネクションが解放されました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

●RollbackChained

説明

トランザクションをロールバックします。

RollbackChainedメソッドが正常終了すると，新しいグローバルトランザクションが発生し，以降呼び出すメソッドは新しいグローバルトランザクションの範囲になります。

宣言

【C#の場合】

public void RollbackChained(
);

【Visual Basicの場合】

Public Sub RollbackChained( _
)

【J#の場合】

public void RollbackChained(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. RollbackChained PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
PROCEDURE DIVISION.
END METHOD RollbackChained.

パラメタ

なし

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrProtoException

RollbackChainedメソッドを不正なコンテキストから呼び出しています。

Hitachi.OpenTP1.Client.ErrHeuristicException

RollbackChainedメソッドを実行したグローバルトランザクションは，ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあとも，このプロセスはトランザクション下にあり，グローバルトランザクションの範囲内です。

Hitachi.OpenTP1.Client.ErrHazardException

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。

しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルを参照してください。

この例外が返されたあとも，このプロセスはトランザクション下にあり，グローバルトランザクションの範囲内です。

Hitachi.OpenTP1.Client.ErrNoBeginException

コミットまたはロールバック処理は正常に終了しましたが，新しいトランザクションは開始できませんでした。

この例外が返されたあと，このプロセスはトランザクション下にありません。

Hitachi.OpenTP1.Client.ErrHeuristicNoBeginException

RollbackChainedメソッドを実行したグローバルトランザクションは，ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

この例外は，ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。

この例外が返される原因になったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルの内容を参照してください。

新しいトランザクションは開始できませんでした。

この例外が返されたあと，このプロセスはトランザクション下にありません。

Hitachi.OpenTP1.Client.ErrHazardNoBeginException

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。

しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

この例外が返される原因となったUAP，リソースマネジャ，およびグローバルトランザクションの同期点の結果は，TP1/Serverのメッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。

この例外が返されたあと，このプロセスはトランザクション下にありません。

Hitachi.OpenTP1.Client.ErrNoBufsException

メモリ不足が発生しました。

Hitachi.OpenTP1.Client.ErrNotUpException

TP1/Serverが稼働していません。

Hitachi.OpenTP1.Client.ErrIOErrException

何らかの入出力例外が発生しました。

Hitachi.OpenTP1.Client.ErrTimedOutException

タイムアウトが発生しました。

Hitachi.OpenTP1.Client.ErrConnfreeException

CUP.NET実行プロセス側から常設コネクションが解放されました。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

●Send

説明

MHPにメッセージを送信します。

Sendメソッドを実行する場合は，Client .NET構成定義の<tcpip>要素のtype属性にsendまたはsendrecvを指定して，OpenRpcメソッドをあらかじめ実行しておく必要があります。

宣言

【C#の場合】

public void Send(
 byte[] buff,
 int sendleng,
 string hostname,
 int portnum,
 int flags
);

【Visual Basicの場合】

Public Sub Send( _
 ByVal buff() As Byte, _
 ByVal sendleng As Integer, _
 ByVal hostname As String, _
 ByVal portnum As Integer, _
 ByVal flags As Integer _
)

【J#の場合】

public void Send(
 ubyte[] buff,
 int sendleng,
 System.String hostname,
 int portnum,
 int flags
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. Send PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 buff         USAGE OBJECT REFERENCE BYTE-ARRAY.
01 sendleng     USAGE BINARY-LONG.
01 hostname     USAGE STRING.
01 portnum      USAGE BINARY-LONG.
01 flags        USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE buff BY VALUE sendleng
                       BY VALUE hostname BY VALUE portnum BY VALUE flags.
END METHOD Send.

パラメタ

buff

送信するメッセージが格納されている領域を指定します。

sendlengで指定する長さ以上の領域を指定してください。

sendleng

送信するメッセージの長さを指定します。

hostname

コネクションが確立されていない場合，接続するMHPが存在するノードのホスト名を指定します。

nullを指定した場合は，OpenRpcメソッドを実行したときに取得したClient .NET構成定義の<tcpip>要素のsendHost属性の内容を参照します。

ホスト名として，10進ドット記法のIPアドレスを指定することもできます。

コネクションが確立されている場合，このパラメタは無視されます。

portnum

コネクションが確立されていない場合，接続するMHPのポート番号を，0から65535までの整数で指定します。

0を指定すると，OpenRpcメソッドを実行したときに取得したClient .NET構成定義の<tcpip>要素のsendPort属性の内容を参照します。

コネクションが確立されている場合，このパラメタは無視されます。

flags

メッセージ送信後にコネクションを解放するかどうかを指定します。

DCNOFLAGS：メッセージ送信後，コネクションを解放しません。
DCNOFLAGSを指定した場合は，障害時を除き，CloseRpcメソッドを実行するまでコネクションを解放しません。

DCCLT_SND_CLOSE：メッセージ送信後，コネクションを解放します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrProtoException

OpenRpcメソッドが実行されていません。または，OpenRpcメソッドは実行されていますが，Client .NET構成定義の<tcpip>要素のtype属性にsendまたはsendrecvを指定していません。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrHostUndefException

hostnameパラメタの指定に誤りがあります。または，hostnameパラメタとClient .NET構成定義の<tcpip>要素のsendHost属性の両方に，ホスト名が指定されていません。

Hitachi.OpenTP1.Client.ErrInvalidPortException

portnumパラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrConnRefusedException

MHPに対するコネクションの確立要求が拒否されました。監視していないポートに対してコネクションを確立しようとしました。

注意事項

Sendメソッドを実行してメッセージを送信しているときに，MHPからコネクションが解放されると，次に実行するSendメソッドは正常終了または異常終了します。

正常終了した場合は，その次に実行するSendメソッドで初めて異常終了します。そのため，CUP.NETを作成するときは注意してください。

●SendAssembledMessage

説明

受信メッセージの組み立て機能を使用してメッセージを送信します。SendAssembledMessageメソッドを実行する場合，Client .NET構成定義の<tcpip>要素のtype属性にsendまたはsendrecvを指定して，OpenRpcメソッドをあらかじめ実行しておく必要があります。

受信メッセージの組み立て機能を使用した場合，メッセージの先頭4バイトにメッセージ長（4＋sendleng引数の指定値）を付けて，buff[0]～buff[sendleng－1]の長さのメッセージを送信します。相手システムとのコネクションが確立されていない場合，hostname引数およびportnum引数の指定に従ってコネクションを確立し，メッセージを送信します。

宣言

【C#の場合】

public void SendAssembledMessage(
 byte[] buff,
 int sendleng,
 string hostname,
 int portnum,
 int timeout,
 int flags
);

【Visual Basicの場合】

Public Sub SendAssembledMessage( _
 ByVal buff() As Byte, _
 ByVal sendleng As Integer, _
 ByVal hostname As String, _
 ByVal portnum As Integer, _
 ByVal timeout As Integer, _
 ByVal flags As Integer _
)

【J#の場合】

public void SendAssembledMessage(
 ubyte[] buff,
 int sendleng,
 System.String hostname,
 int portnum,
 int timeout,
 int flags
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. SendAssembledMessage PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 buff         USAGE OBJECT REFERENCE BYTE-ARRAY.
01 sendleng     USAGE BINARY-LONG.
01 hostname     USAGE STRING.
01 portnum      USAGE BINARY-LONG.
01 timeout      USAGE BINARY-LONG.
01 flags        USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE buff BY VALUE sendleng
                       BY VALUE hostname BY VALUE portnum BY VALUE timeout BY VALUE flags.
END METHOD SendAssembledMessage.

パラメタ

buff

送信するメッセージが格納されている領域を指定します。

sendlengパラメタで指定する長さ以上の領域を指定してください。

sendleng

送信するメッセージの長さを指定します。

hostname

コネクションが確立されていない場合，接続する相手システムのホスト名を指定します。

nullを指定した場合は，OpenRpcメソッドを実行したときに取得したClient .NET構成定義の<tcpip>要素のsendHost属性の内容を参照します。

ホスト名として，10進ドット記法のIPアドレスを指定することもできます。

コネクションが確立されている場合，このパラメタは無視されます。

portnum

コネクションが確立されていない場合，接続する相手システムのポート番号を，0から65535までの整数で指定します。0を指定すると，OpenRpcメソッドを実行したときに取得したClient .NET構成定義の<tcpip>要素のsendPort属性の内容を参照します。

コネクションが確立されている場合，このパラメタは無視されます。

timeout

予約引数です。0を指定してください。

flags

メッセージ送信後にコネクションを解放するかどうかを指定します。

DCNOFLAGS：メッセージ送信後，コネクションを解放しません。
DCNOFLAGSを指定した場合は，障害時を除き，CloseRpcメソッドを実行するまでコネクションを解放しません。

DCCLT_SND_CLOSE：メッセージ送信後，コネクションを解放します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrProtoException

OpenRpcメソッドが実行されていません。または，OpenRpcメソッドは実行されていますが，Client .NET構成定義の<tcpip>要素のtype属性にsendまたはsendrecvを指定していません。

Hitachi.OpenTP1.Client.ErrNetDownException

ネットワーク障害が発生しました。

Hitachi.OpenTP1.Client.ErrSyserrException

システムエラーが発生しました。

Hitachi.OpenTP1.Client.ErrHostUndefException

hostnameパラメタの指定に誤りがあります。または，hostnameパラメタとClient .NET構成定義の<tcpip>要素のsendHost属性の両方に，ホスト名が指定されていません。

Hitachi.OpenTP1.Client.ErrInvalidPortException

portnumパラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrConnRefusedException

相手システムに対するコネクションの確立要求が拒否されました。監視していないポートに対してコネクションを確立しようとしました。

Hitachi.OpenTP1.Client.ErrTimedOutException

応答メッセージの受信時にタイムアウトになりました。

コネクションは解放されます。

Hitachi.OpenTP1.Client.ErrConnfreeException

相手システムからコネクションが解放されました。

Hitachi.OpenTP1.Client.ErrInvalidMessageException

不正なメッセージを受信しました。

Hitachi.OpenTP1.Client.ErrCollisionMessageException

送受信メッセージの衝突が発生しました。

注意事項

SendAssembledMessageメソッドを実行してメッセージを送信しているときに相手システムからコネクションが解放されると，次に実行するSendAssembledMessageメソッドは正常終了または異常終了します。

正常終了した場合は，その次に実行するSendAssembledMessageメソッドで初めて異常終了します。そのため，CUP.NETを作成するときは注意してください。

●SetConnectInformation

説明

端末識別情報を設定します。

このメソッドに指定した端末識別情報は，Client .NET構成定義の<tp1Server>要素のhost属性にDCCM3論理端末のホスト名を，<tp1Server>要素のport属性または<rapService>要素のport属性にDCCM3論理端末のポート番号を指定し，次のどちらか方法でDCCM3論理端末との常設コネクションを確立した場合に有効となります。

OpenConnectionメソッドを呼び出します。引数有りのOpenConnectionメソッドの場合，引数hostにDCCM3のホスト名，引数portにDCCM3のポート番号を指定します。

Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定し，Callメソッドを呼び出します。

このメソッドを呼び出した場合，Client .NET構成定義の<rapService>要素のconnectInformation属性に指定した端末識別情報は，再びOpenRpcメソッドを呼び出すまで無視されます。

なお，このメソッドに指定した端末識別情報は，DCCM3論理端末との常設コネクション確立時に認識されます。このメソッドを複数回呼び出した場合は，DCCM3論理端末との常設コネクションを確立する直前に指定した端末識別情報が有効となります。

また，ネームサービスを使用したRPC，またはスケジューラダイレクト機能を使用したRPCの場合は，このメソッドで指定した端末識別情報は無視されます。

宣言

【C#の場合】

public void SetConnectInformation(
 byte[] inf,
 short inf_len
);

【Visual Basicの場合】

Public Sub SetConnectInformation( _
 ByVal inf() As Byte, _
 ByVal inf_len As Short _
)

【J#の場合】

public void SetConnectInformation(
 ubyte[] inf,
 short inf_len
);

【COBOL言語の場合】

REPOSITORY.
 CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. SetConnectInformation PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 inf          USAGE OBJECT REFERENCE BYTE-ARRAY.
01 inf_len      USAGE BINARY-SHORT.
PROCEDURE DIVISION USING BY VALUE inf BY VALUE inf_len.
END METHOD SetConnectInformation.

パラメタ

inf

端末識別情報として，DCCM3論理端末の論理端末名称を64バイト以内のEBCDIKコードで指定します。

ただし，DCCM3側では先頭8バイト目までに指定した値だけが有効になり，9バイト目以降に指定された値は無視されます。

inf_len

端末識別情報長を指定します。

1から64までの範囲のバイト長を指定します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

●SetDataTraceMode

説明

データトレースを取得するかどうかを指定します。

宣言

【C#の場合】

public void SetDataTraceMode(
 string TrcPath,
 int size,
 int DataSize,
 System.Boolean flag
);

【Visual Basicの場合】

Public Sub SetDataTraceMode( _
 ByVal TrcPath As String, _
 ByVal size As Integer, _
 ByVal DataSize As Integer, _
 ByVal flag As System.Boolean _
)

【J#の場合】

public void SetDataTraceMode(
 System.String TrcPath,
 int size,
 int DataSize,
 System.Boolean flag
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetDataTraceMode PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 TrcPath       USAGE STRING.
01 size          USAGE BINARY-LONG.
01 DataSize      USAGE BINARY-LONG.
01 flag          USAGE LOGICAL.
PROCEDURE DIVISION USING BY VALUE TrcPath BY VALUE size BY VALUE DataSize BY VALUE flag.
END METHOD SetDataTraceMode.

パラメタ

TrcPath

データトレースを出力するディレクトリを指定します。

flagパラメタにfalseを指定した場合は無視されます。

size

出力するデータトレースファイルのサイズを4096から1048576（単位：バイト）までの範囲で指定します。

flagパラメタにfalseを指定した場合は無視されます。

DataSize

出力する一つのデータトレースの最大データ長を16から1048576までの範囲で指定します。

flagパラメタにfalseを指定した場合は無視されます。

flag

データトレースを取得するかどうかを指定します。

true：データトレースを取得します。

false：データトレースを取得しません。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

●SetErrorTraceMode

説明

エラートレースを取得するかどうかを指定します。

宣言

【C#の場合】

public void SetErrorTraceMode(
 string TrcPath,
 int size,
 System.Boolean flag
);

【Visual Basicの場合】

Public Sub SetErrorTraceMode( _
 ByVal TrcPath As String, _
 ByVal size As Integer, _
 ByVal flag As System.Boolean _
)

【J#の場合】

public void SetErrorTraceMode(
 System.String TrcPath,
 int size,
 System.Boolean flag
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetErrorTraceMode PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 TrcPath       USAGE STRING.
01 size          USAGE BINARY-LONG.
01 flag          USAGE LOGICAL.
PROCEDURE DIVISION USING BY VALUE TrcPath BY VALUE size BY VALUE flag.
END METHOD SetErrorTraceMode.

パラメタ

TrcPath

エラートレースを出力するディレクトリを指定します。

flagパラメタにfalseを指定した場合は無視されます。

size

出力するエラートレースファイルのサイズを4096から1048576（単位：バイト）までの範囲で指定します。

flagパラメタにfalseを指定した場合は無視されます。

flag

エラートレースを取得するかどうかを指定します。

true：エラートレースを取得します。

false：エラートレースを取得しません。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

●SetExtendLevel

説明

Client .NETの機能の拡張レベルを指定します。

機能の拡張レベルを複数指定する場合，それぞれの指定値の論理和を指定します。

宣言

【C#の場合】

public void SetExtendLevel(
 int flags
);

【Visual Basicの場合】

Public Sub SetExtendLevel( _
 ByVal flags As Integer _
)

【J#の場合】

public void SetExtendLevel(
 int flags
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetExtendLevel PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 flags  USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE flags.
END METHOD SetExtendLevel.

パラメタ

flags

Client .NETの機能の拡張レベルを指定します。

0x00000000
Client .NETの機能を拡張しません。

0x00000001
Client .NET機能を拡張します。Callメソッド呼び出し時，自CUP.NETのIPアドレスをサービスに連絡します。
呼び出したサービスでdc_rpc_get_callers_addressメソッドを実行し，CUP.NETのアドレスを求める必要がある場合に指定してください。

戻り値

なし

例外

なし

●SetMethodTraceMode

説明

メソッドトレースを取得するかどうかを指定します。

宣言

【C#の場合】

public void SetMethodTraceMode(
 string TrcPath,
 int size,
 System.Boolean flag
);

【Visual Basicの場合】

Public Sub SetMethodTraceMode( _
 ByVal TrcPath As String, _
 ByVal size As Integer, _
 ByVal flag As System.Boolean _
)

【J#の場合】

public void SetMethodTraceMode(
 System.String TrcPath,
 int size,
 System.Boolean flag
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetMethodTraceMode PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 TrcPath       USAGE STRING.
01 size          USAGE BINARY-LONG.
01 flag          USAGE LOGICAL.
PROCEDURE DIVISION USING BY VALUE TrcPath BY VALUE size BY VALUE flag.
END METHOD SetMethodTraceMode.

パラメタ

TrcPath

メソッドトレースを出力するディレクトリを指定します。

flagパラメタにfalseを指定した場合は無視されます。

size

出力するメソッドトレースファイルのサイズを4096から1048576（単位：バイト）までの範囲で指定します。

flagパラメタにfalseを指定した場合は無視されます。

flag

メソッドトレースを取得するかどうかを指定します。

true：メソッドトレースを取得します。

false：メソッドトレースを取得しません。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

●SetRapDelay

説明

rapサーバとCUP.NET間の通信遅延時間を設定します。

このメソッドを設定すると，rapサーバ側の最大応答待ち時間の時間監視を指定した値の分だけ早く終了させ，CUP.NET側の最大応答待ち時間の監視時間タイムアウトによるメッセージのすれ違いを防止できます。

SetRpcWatchTimeメソッドで指定した最大応答待ち時間が0の場合，このメソッドで指定した通信遅延時間は無視されます。

また，最大応答待ち時間からrapサーバ通信時間を引いた値が0または負の値になるときは，rapサーバ側での最大応答待ち時間を1と仮定してrapサーバが動作します。

なお，このメソッドの指定を有効にするには，Client .NET構成定義で<rapService>要素のwatchTimeInheritance属性にtrueを指定するか，またはSetRpcExtendメソッドのextendoptionパラメタにDCRPC_WATCHTIMINHERITを指定してください。

宣言

【C#の場合】

public void SetRapDelay(
 int sec
);

【Visual Basicの場合】

Public Sub SetRapDelay( _
 ByVal sec As Integer _
)

【J#の場合】

public void SetRapDelay(
 int sec
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetRapDelay PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 sec  USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE sec.
END METHOD SetRapDelay.

パラメタ

sec

rapサーバとCUP.NET間の通信遅延時間を0から65535（単位：秒）までの範囲で指定します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

secパラメタに指定された値が，0から65535までの範囲にありません。

●SetRapInquireTime

説明

CUP.NETがサーバに対して問い合わせを行ってから，次の問い合わせをするまでの間隔の最大時間を設定します。この値はrapサーバで監視するタイマです。

指定時間を超えても問い合わせがない場合，rapサーバは強制的に常設コネクションを切断します。

このメソッドはTP1Clientクラスのインスタンスが存在している間，呼び出せます。

宣言

【C#の場合】

public void SetRapInquireTime(
 int sec
);

【Visual Basicの場合】

Public Sub SetRapInquireTime( _
 ByVal sec As Integer _
)

【J#の場合】

public void SetRapInquireTime(
 int sec
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetRapInquireTime PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 sec  USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE sec.
END METHOD SetRapInquireTime.

パラメタ

sec

rapサーバが監視する問い合わせ間隔最大時間を0から1048575（単位：秒）までの範囲で指定します。

0を指定した場合は，rapサーバはCUP.NETからの問い合わせを無限に待ちます。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

secパラメタに指定された値が，0から1048575までの範囲にありません。

●SetRpcExtend

説明

Client .NETから発行するRPCの機能拡張オプションを指定します。

RPC機能の拡張レベルを複数指定する場合，それぞれの指定値の論理和を指定します。

宣言

【C#の場合】

public void SetRpcExtend(
 int extendoption
);

【Visual Basicの場合】

Public Sub SetRpcExtend( _
 ByVal extendoption As Integer _
)

【J#の場合】

public void SetRpcExtend(
 int extendoption
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetRpcExtend PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 extendoption  USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE extendoption.
END METHOD SetRpcExtend.

パラメタ

extendoption

RPC機能の拡張レベルを指定します。

DCRPC_SCD_LOAD_PRIORITY
サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散するかどうかを指定します。

オプションの真偽 | 動作
真の場合 | Client .NET構成定義で，<scheduleService>要素のusePriority属性にtrueを指定したときと同じ動作をします。
偽の場合 | Client .NET構成定義で，<scheduleService>要素のusePriority属性にfalseを指定したときと同じ動作をします。

DCRPC_WATCHTIMINHERIT
リモートAPI機能を使用したRPCを行う場合に，CUP.NETの最大応答待ち時間をrapサーバ側に引き継ぐかどうかを指定します。

オプションの真偽 | 動作
真の場合 | Client .NET構成定義で，<rapService>要素のwatchTimeInheritance属性にtrueを指定したときと同じ動作をします。
偽の場合 | Client .NET構成定義で，<rapService>要素のwatchTimeInheritance属性にfalseを指定したときと同じ動作をします。

DCRPC_RAP_AUTOCONNECT
リモートAPI機能を使用したRPCを行う場合に，Client .NETが自動的にコネクションを確立するかどうかを指定します。
すでに非オートコネクトモードを使用し，OpenConnectionメソッドを呼び出してコネクションを確立している場合は，このオプションは無視されます。

オプションの真偽 | 動作
真の場合 | Client .NET構成定義で，<rapService>要素のautoConnect属性にtrueを指定したときと同じ動作をします。
偽の場合 | Client .NET構成定義で，<rapService>要素のautoConnect属性にfalseを指定したときと同じ動作をします。

DCRPC_WATCHTIMRPCINHERIT
CUP.NETの最大応答待ち時間を，サーバ側に引き継ぐかどうかを指定します。

オプションの真偽 | 動作
真の場合 | Client .NET構成定義で，<rpc>要素のwatchTimeNotification属性にtrueを指定したときと同じ動作をします。
偽の場合 | Client .NET構成定義で，<rpc>要素のwatchTimeNotification属性にfalseを指定したときと同じ動作をします。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

extendoptionパラメタの指定に誤りがあります。

●SetRpcWatchTime

説明

同期応答型RPCの場合に，CUP.NETからSPP.NETまたはSPPへサービス要求を送ってからサービスの応答が返るまでの最大応答待ち時間を設定します。

このメソッドで設定する値は，Client .NETの内部通信での最大応答待ち時間としても使用されます。

宣言

【C#の場合】

public void SetRpcWatchTime(
 int sec
);

【Visual Basicの場合】

Public Sub SetRpcWatchTime( _
 ByVal sec As Integer _
)

【J#の場合】

public void SetRpcWatchTime(
 int sec
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetRpcWatchTime PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 sec  USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE sec.
END METHOD SetRpcWatchTime.

パラメタ

sec

最大応答待ち時間を0から65535（単位：秒）までの範囲で指定します。

0を指定した場合は，応答を受信するまで無限に待ちます。使用する環境によっては，サーバがダウンしてもTCP/IPコネクションの切断を検出できない場合があります。この場合，待ち時間を無限にすると存在しないサーバからの応答を永久に待ち続けることになるため，適当な待ち時間を設定してください。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

secパラメタに指定された値が，0から65535までの範囲にありません。

●SetTP1Server

説明

窓口となるTP1/Serverのホスト名とポート番号を設定します。

宣言

【C#の場合】

public void SetTP1Server(
 string host,
 int port
);

【Visual Basicの場合】

Public Sub SetTP1Server( _
 ByVal host As String, _
 ByVal port As Integer _
)

【J#の場合】

public void SetTP1Server(
 System.String host,
 int port
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetTP1Server PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 host      USAGE STRING.
01 port      USAGE BINARY-LONG.
PROCEDURE DIVISION USING BY VALUE host BY VALUE port.
END METHOD SetTP1Server.

パラメタ

host

窓口となるTP1/Serverのホスト名を指定します。

リモートAPI機能を使用したRPCを行う場合は，通信先のrapリスナーのホスト名を指定します。

CUP.NETとTP1/Serverとの間にファイアウォールがある場合は，ファイアウォールのホスト名を指定します。

port

窓口となるTP1/Server上で動作しているスケジュールサーバのポート番号，またはネームサーバのポート番号を指定します。リモートAPI機能を使用したRPCを行う場合は，通信先のrapリスナーのポート番号を指定します。

ポート番号は，5001から65535までの範囲で指定します。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrHostUndefException

hostパラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrInvalidPortException

portパラメタの指定に誤りがあります。

Hitachi.OpenTP1.Client.ErrProtoException

メソッドの発行順序に誤りがあります。リモートAPI機能を使用したRPCを行う場合で，すでにrapサーバとの間に常設コネクションが確立されている状態でこのメソッドが呼び出されました。

●SetTraceArray

説明

パラメタに指定された配列にエラートレースを取得するかどうかを指定します。

宣言

【C#の場合】

public void SetTraceArray(
 string[] array
);

【Visual Basicの場合】

Public Sub SetTraceArray( _
 ByVal array() As String _
)

【J#の場合】

public void SetTraceArray(
 System.String[] array
);

【COBOL言語の場合】

REPOSITORY.
 CLASS STR-ARRAY       AS 'System.String' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. SetTraceArray PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 array  USAGE OBJECT REFERENCE STR-ARRAY.
PROCEDURE DIVISION USING BY VALUE array.
END METHOD SetTraceArray.

パラメタ

array

エラートレースを格納するString配列を指定します。

nullを指定した場合，エラートレースを取得しません。

戻り値

なし

例外

なし

●SetUapTraceMode

説明

UAPトレースを取得するかどうかを指定します。

宣言

【C#の場合】

public void SetUapTraceMode(
 string TrcPath,
 int size,
 System.Boolean flag
);

【Visual Basicの場合】

Public Sub SetUapTraceMode( _
 ByVal TrcPath As String, _
 ByVal size As Integer, _
 ByVal flag As System.Boolean _
)

【J#の場合】

public void SetUapTraceMode(
 System.String TrcPath,
 int size,
 System.Boolean flag
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. SetUapTraceMode PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 TrcPath       USAGE STRING.
01 size          USAGE BINARY-LONG.
01 flag          USAGE LOGICAL.
PROCEDURE DIVISION USING BY VALUE TrcPath BY VALUE size BY VALUE flag.
END METHOD SetUapTraceMode.

パラメタ

TrcPath

UAPトレースを出力するディレクトリを指定します。

flagパラメタにfalseを指定した場合は無視されます。

size

出力するUAPトレースファイルのサイズを4096から1048576（単位：バイト）までの範囲で指定します。

flagパラメタにfalseを指定した場合は無視されます。

flag

UAPトレースを取得するかどうかを指定します。

true：UAPトレースを取得します。

false：UAPトレースを取得しません。

戻り値

なし

例外

Hitachi.OpenTP1.Client.ErrInvalidArgsException

パラメタの指定に誤りがあります。

TP1ClientError

TP1ClientErrorの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- Hitachi.OpenTP1.Client.TP1ClientError

説明

Client .NETで使用するエラーコードを定義するクラスです。COBOL言語から定数値のフィールドを使用する場合は，「付録B　Client .NETで利用できるクラスのフィールド」を参照して，対応する値を指定してください。

フィールドの一覧

名称
説明

DCCLNER_BUFFER_OVERFLOW
受信バッファのオーバフローが発生しました。

DCCLNER_COLLISION_MSG
送受信メッセージの衝突が発生しました。

DCCLNER_CONNFREE
コネクションが切断されました。

DCCLNER_CONNREFUSED
接続がリモートで拒否されました。

DCCLNER_EOF
入力の途中で，予期しないで終了しました。

DCCLNER_FATAL
Client .NET構成定義の指定に誤りがあります。

DCCLNER_INVALID_ARGS
メソッドのパラメタの指定に誤りがあります。

DCCLNER_INVALID_HOST
ホスト名が指定されていないか，または指定に誤りがあります。

DCCLNER_INVALID_MSG
不正なメッセージを受信しました。

DCCLNER_INVALID_PORT
ポート番号が指定されていないか，または指定に誤りがあります。

DCCLNER_IO
何らかの入出力例外が発生しました。

DCCLNER_MARSHAL
カスタムレコードのマーシャリング/アンマーシャリング処理に失敗しました。

DCCLNER_MESSAGE_TOO_BIG
Callメソッドに指定した入力パラメタ長が最大値を超えています。

DCCLNER_NETDOWN
ネットワーク障害が発生しました。または，通信先のTP1/Serverが稼働していません。

DCCLNER_NETDOWN_C
Client .NET側でタイムアウトが発生しました。

DCCLNER_NETDOWN_S
TP1/Serverと，SPP.NETまたはSPPとの間でネットワーク障害が発生しました。

DCCLNER_NOBUFS
メモリ不足が発生しました。

DCCLNER_NOT_UP
指定したサービスが存在するノードのTP1/Serverが稼働していません。

DCCLNER_PARAM
パラメタエラーが発生しました。

DCCLNER_PROTO
メソッドの発行順序に誤りがあります。

DCCLNER_REPLY_TOO_BIG
サーバから返された応答の長さが，CUP.NETで用意した領域（out_dataパラメタの指定値）の長さを超えています。

DCCLNER_SYS
システムエラーが発生しました。

DCCLNER_TIMEOUT
タイムアウトが発生しました。

DCCLNER_TIMEOUT_C
Client .NET側でタイムアウトが発生しました。

DCCLNER_TIMEOUT_S
TP1/Server側でサービスの実行中にタイムアウトが発生しました。
または，サービス要求先のSPP.NETもしくはSPPが処理を終了する前に異常終了しました。

DCCLNER_UNEXPECT
予期しないエラーです。

DCCLNTRNER_HAZARD
グローバルトランザクションのトランザクションブランチが，ヒューリスティックに完了しました。

DCCLNTRNER_HAZARD_NO_BEGIN
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。
新しいトランザクションは開始できませんでした。

DCCLNTRNER_HEURISTIC
ヒューリスティック決定の結果が，グローバルトランザクションの同期点の結果と一致しません。

DCCLNTRNER_HEURISTIC_NO_BEGIN
ヒューリスティック決定の結果が，グローバルトランザクションの同期点の結果と一致しません。
新しいトランザクションは開始できませんでした。

DCCLNTRNER_NO_BEGIN
コミットまたはロールバック処理は正常に終了しましたが，新しいトランザクションは開始できませんでした。

DCCLNTRNER_RM
リソースマネジャでエラーが発生しました。トランザクションは開始できませんでした。

DCCLNTRNER_ROLLBACK
現在のトランザクションは，コミットできないでロールバックしました。

DCCLNTRNER_ROLLBACK_NO_BEGIN
コミットしようとしたトランザクションは，コミットできないでロールバックしました。
新しいトランザクションは開始できませんでした。

DCCLNTRNER_TM
トランザクションサービスでエラーが発生したため，トランザクションを開始できませんでした。

フィールドの詳細

●DCCLNER_BUFFER_OVERFLOW

説明

受信バッファのオーバフローが発生しました。

宣言

【C#の場合】

public const int DCCLNER_BUFFER_OVERFLOW

【Visual Basicの場合】

Public Const DCCLNER_BUFFER_OVERFLOW As Integer

【J#の場合】

public static final int DCCLNER_BUFFER_OVERFLOW

●DCCLNER_COLLISION_MSG

説明

送受信メッセージの衝突が発生しました。

宣言

【C#の場合】

public const int DCCLNER_COLLISION_MSG

【Visual Basicの場合】

Public Const DCCLNER_COLLISION_MSG As Integer

【J#の場合】

public static final int DCCLNER_COLLISION_MSG

●DCCLNER_CONNFREE

説明

コネクションが切断されました。

宣言

【C#の場合】

public const int DCCLNER_CONNFREE

【Visual Basicの場合】

Public Const DCCLNER_CONNFREE As Integer

【J#の場合】

public static final int DCCLNER_CONNFREE

●DCCLNER_CONNREFUSED

説明

接続がリモートで拒否されました。

宣言

【C#の場合】

public const int DCCLNER_CONNREFUSED

【Visual Basicの場合】

Public Const DCCLNER_CONNREFUSED As Integer

【J#の場合】

public static final int DCCLNER_CONNREFUSED

●DCCLNER_EOF

説明

入力の途中で，予期しないで終了しました。

宣言

【C#の場合】

public const int DCCLNER_EOF

【Visual Basicの場合】

Public Const DCCLNER_EOF As Integer

【J#の場合】

public static final int DCCLNER_EOF

●DCCLNER_FATAL

説明

Client .NET構成定義の指定に誤りがあります。

宣言

【C#の場合】

public const int DCCLNER_FATAL

【Visual Basicの場合】

Public Const DCCLNER_FATAL As Integer

【J#の場合】

public static final int DCCLNER_FATAL

●DCCLNER_INVALID_ARGS

説明

メソッドのパラメタの指定に誤りがあります。

宣言

【C#の場合】

public const int DCCLNER_INVALID_ARGS

【Visual Basicの場合】

Public Const DCCLNER_INVALID_ARGS As Integer

【J#の場合】

public static final int DCCLNER_INVALID_ARGS

●DCCLNER_INVALID_HOST

説明

ホスト名が指定されていないか，または指定に誤りがあります。

宣言

【C#の場合】

public const int DCCLNER_INVALID_HOST

【Visual Basicの場合】

Public Const DCCLNER_INVALID_HOST As Integer

【J#の場合】

public static final int DCCLNER_INVALID_HOST

●DCCLNER_INVALID_MSG

説明

不正なメッセージを受信しました。

宣言

【C#の場合】

public const int DCCLNER_INVALID_MSG

【Visual Basicの場合】

Public Const DCCLNER_INVALID_MSG As Integer

【J#の場合】

public static final int DCCLNER_INVALID_MSG

●DCCLNER_INVALID_PORT

説明

ポート番号が指定されていないか，または指定に誤りがあります。

宣言

【C#の場合】

public const int DCCLNER_INVALID_PORT

【Visual Basicの場合】

Public Const DCCLNER_INVALID_PORT As Integer

【J#の場合】

public static final int DCCLNER_INVALID_PORT

●DCCLNER_IO

説明

何らかの入出力例外が発生しました。

宣言

【C#の場合】

public const int DCCLNER_IO

【Visual Basicの場合】

Public Const DCCLNER_IO As Integer

【J#の場合】

public static final int DCCLNER_IO

●DCCLNER_MARSHAL

説明

カスタムレコードのマーシャリング/アンマーシャリング処理に失敗しました。

宣言

【C#の場合】

public const int DCCLNER_MARSHAL

【Visual Basicの場合】

Public Const DCCLNER_MARSHAL As Integer

【J#の場合】

public static final int DCCLNER_MARSHAL

●DCCLNER_MESSAGE_TOO_BIG

説明

Callメソッドに指定した入力パラメタ長が最大値を超えています。

宣言

【C#の場合】

public const int DCCLNER_MESSAGE_TOO_BIG

【Visual Basicの場合】

Public Const DCCLNER_MESSAGE_TOO_BIG As Integer

【J#の場合】

public static final int DCCLNER_MESSAGE_TOO_BIG

●DCCLNER_NETDOWN

説明

ネットワーク障害が発生しました。または，通信先のTP1/Serverが稼働していません。

宣言

【C#の場合】

public const int DCCLNER_NETDOWN

【Visual Basicの場合】

Public Const DCCLNER_NETDOWN As Integer

【J#の場合】

public static final int DCCLNER_NETDOWN

●DCCLNER_NETDOWN_C

説明

Client .NET側でタイムアウトが発生しました。

宣言

【C#の場合】

public const int DCCLNER_NETDOWN_C

【Visual Basicの場合】

Public Const DCCLNER_NETDOWN_C As Integer

【J#の場合】

public static final int DCCLNER_NETDOWN_C

●DCCLNER_NETDOWN_S

説明

TP1/Serverと，SPP.NETまたはSPPとの間でネットワーク障害が発生しました。

宣言

【C#の場合】

public const int DCCLNER_NETDOWN_S

【Visual Basicの場合】

Public Const DCCLNER_NETDOWN_S As Integer

【J#の場合】

public static final int DCCLNER_NETDOWN_S

●DCCLNER_NOBUFS

説明

メモリ不足が発生しました。

宣言

【C#の場合】

public const int DCCLNER_NOBUFS

【Visual Basicの場合】

Public Const DCCLNER_NOBUFS As Integer

【J#の場合】

public static final int DCCLNER_NOBUFS

●DCCLNER_NOT_UP

説明

指定したサービスが存在するノードのTP1/Serverが稼働していません。

宣言

【C#の場合】

public const int DCCLNER_NOT_UP

【Visual Basicの場合】

Public Const DCCLNER_NOT_UP As Integer

【J#の場合】

public static final int DCCLNER_NOT_UP

●DCCLNER_PARAM

説明

パラメタエラーが発生しました。

宣言

【C#の場合】

public const int DCCLNER_PARAM

【Visual Basicの場合】

Public Const DCCLNER_PARAM As Integer

【J#の場合】

public static final int DCCLNER_PARAM

●DCCLNER_PROTO

説明

メソッドの発行順序に誤りがあります。

宣言

【C#の場合】

public const int DCCLNER_PROTO

【Visual Basicの場合】

Public Const DCCLNER_PROTO As Integer

【J#の場合】

public static final int DCCLNER_PROTO

●DCCLNER_REPLY_TOO_BIG

説明

サーバから返された応答の長さが，CUP.NETで用意した領域（out_dataパラメタの指定値）の長さを超えています。

宣言

【C#の場合】

public const int DCCLNER_REPLY_TOO_BIG

【Visual Basicの場合】

Public Const DCCLNER_REPLY_TOO_BIG As Integer

【J#の場合】

public static final int DCCLNER_REPLY_TOO_BIG

●DCCLNER_SYS

説明

システムエラーが発生しました。

宣言

【C#の場合】

public const int DCCLNER_SYS

【Visual Basicの場合】

Public Const DCCLNER_SYS As Integer

【J#の場合】

public static final int DCCLNER_SYS

●DCCLNER_TIMEOUT

説明

タイムアウトが発生しました。

宣言

【C#の場合】

public const int DCCLNER_TIMEOUT

【Visual Basicの場合】

Public Const DCCLNER_TIMEOUT As Integer

【J#の場合】

public static final int DCCLNER_TIMEOUT

●DCCLNER_TIMEOUT_C

説明

Client .NET側でタイムアウトが発生しました。

宣言

【C#の場合】

public const int DCCLNER_TIMEOUT_C

【Visual Basicの場合】

Public Const DCCLNER_TIMEOUT_C As Integer

【J#の場合】

public static final int DCCLNER_TIMEOUT_C

●DCCLNER_TIMEOUT_S

説明

TP1/Server側でサービスの実行中にタイムアウトが発生しました。

または，サービス要求先のSPP.NETもしくはSPPが処理を終了する前に異常終了しました。

宣言

【C#の場合】

public const int DCCLNER_TIMEOUT_S

【Visual Basicの場合】

Public Const DCCLNER_TIMEOUT_S As Integer

【J#の場合】

public static final int DCCLNER_TIMEOUT_S

●DCCLNER_UNEXPECT

説明

予期しないエラーです。

宣言

【C#の場合】

public const int DCCLNER_UNEXPECT

【Visual Basicの場合】

Public Const DCCLNER_UNEXPECT As Integer

【J#の場合】

public static final int DCCLNER_UNEXPECT

●DCCLNTRNER_HAZARD

説明

グローバルトランザクションのトランザクションブランチが，ヒューリスティックに完了しました。

宣言

【C#の場合】

public const int DCCLNTRNER_HAZARD

【Visual Basicの場合】

Public Const DCCLNTRNER_HAZARD As Integer

【J#の場合】

public static final int DCCLNTRNER_HAZARD

●DCCLNTRNER_HAZARD_NO_BEGIN

説明

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。

新しいトランザクションは開始できませんでした。

宣言

【C#の場合】

public const int DCCLNTRNER_HAZARD_NO_BEGIN

【Visual Basicの場合】

Public Const DCCLNTRNER_HAZARD_NO_BEGIN As Integer

【J#の場合】

public static final int DCCLNTRNER_HAZARD_NO_BEGIN

●DCCLNTRNER_HEURISTIC

説明

ヒューリスティック決定の結果が，グローバルトランザクションの同期点の結果と一致しません。

宣言

【C#の場合】

public const int DCCLNTRNER_HEURISTIC

【Visual Basicの場合】

Public Const DCCLNTRNER_HEURISTIC As Integer

【J#の場合】

public static final int DCCLNTRNER_HEURISTIC

●DCCLNTRNER_HEURISTIC_NO_BEGIN

説明

ヒューリスティック決定の結果が，グローバルトランザクションの同期点の結果と一致しません。

新しいトランザクションは開始できませんでした。

宣言

【C#の場合】

public const int DCCLNTRNER_HEURISTIC_NO_BEGIN

【Visual Basicの場合】

Public Const DCCLNTRNER_HEURISTIC_NO_BEGIN As Integer

【J#の場合】

public static final int DCCLNTRNER_HEURISTIC_NO_BEGIN

●DCCLNTRNER_NO_BEGIN

説明

コミットまたはロールバック処理は正常に終了しましたが，新しいトランザクションは開始できませんでした。

宣言

【C#の場合】

public const int DCCLNTRNER_NO_BEGIN

【Visual Basicの場合】

Public Const DCCLNTRNER_NO_BEGIN As Integer

【J#の場合】

public static final int DCCLNTRNER_NO_BEGIN

●DCCLNTRNER_RM

説明

リソースマネジャでエラーが発生しました。トランザクションは開始できませんでした。

宣言

【C#の場合】

public const int DCCLNTRNER_RM

【Visual Basicの場合】

Public Const DCCLNTRNER_RM As Integer

【J#の場合】

public static final int DCCLNTRNER_RM

●DCCLNTRNER_ROLLBACK

説明

現在のトランザクションは，コミットできないでロールバックしました。

宣言

【C#の場合】

public const int DCCLNTRNER_ROLLBACK

【Visual Basicの場合】

Public Const DCCLNTRNER_ROLLBACK As Integer

【J#の場合】

public static final int DCCLNTRNER_ROLLBACK

●DCCLNTRNER_ROLLBACK_NO_BEGIN

説明

コミットしようとしたトランザクションは，コミットできないでロールバックしました。

新しいトランザクションは開始できませんでした。

宣言

【C#の場合】

public const int DCCLNTRNER_ROLLBACK_NO_BEGIN

【Visual Basicの場合】

Public Const DCCLNTRNER_ROLLBACK_NO_BEGIN As Integer

【J#の場合】

public static final int DCCLNTRNER_ROLLBACK_NO_BEGIN

●DCCLNTRNER_TM

説明

トランザクションサービスでエラーが発生したため，トランザクションを開始できませんでした。

宣言

【C#の場合】

public const int DCCLNTRNER_TM

【Visual Basicの場合】

Public Const DCCLNTRNER_TM As Integer

【J#の場合】

public static final int DCCLNTRNER_TM

TP1ClientException

TP1ClientExceptionの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.Client.TP1ClientException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

TP1ClientExceptionクラスは，Client .NETが返すすべての例外のスーパークラスです。

TP1ClientFlags

TP1ClientFlagsの概要

名前空間

Hitachi.OpenTP1.Client

継承関係

System.Object
 +- Hitachi.OpenTP1.Client.TP1ClientFlags

説明

Client .NETで使用するメソッドのパラメタで用いるフラグを定義するクラスです。COBOL言語から定数値のフィールドを使用する場合は，「付録B　Client .NETで利用できるクラスのフィールド」を参照して，対応する値を指定してください。

フィールドの一覧

名称 | 説明
DCCLT_RCV_CLOSE | メッセージ受信後，コネクションを解放します。
DCCLT_SND_CLOSE | メッセージ送信後，コネクションを解放します。
DCNOFLAGS | RPCの形態に同期応答型RPCを指定します。
DCRPC_CHAINED | RPCの形態に連鎖RPCを指定します。
DCRPC_NOREPLY | RPCの形態に非応答型RPCを指定します。
DCRPC_RAP_AUTOCONNECT | リモートAPI機能を利用したRPCを行う場合に，Client .NETが自動的にコネクションを確立するかどうかを指定します。
DCRPC_SCD_LOAD_PRIORITY | サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散するかどうかを指定します。
DCRPC_TPNOTRAN | RPCの形態にトランザクションを引き継がないRPCを指定します。
DCRPC_WATCHTIMINHERIT | リモートAPI機能を使用したRPCを行う場合に，CUP.NETの最大応答待ち時間をrapサーバ側に引き継ぐかどうかを指定します。
DCRPC_WATCHTIMRPCINHERIT | CUP.NETの最大応答待ち時間を，サーバ側に引き継ぐかどうかを指定します。

フィールドの詳細

●DCCLT_RCV_CLOSE

説明

メッセージ受信後，コネクションを解放します。

宣言

【C#の場合】

public const int DCCLT_RCV_CLOSE

【Visual Basicの場合】

Public Const DCCLT_RCV_CLOSE As Integer

【J#の場合】

public static final int DCCLT_RCV_CLOSE

●DCCLT_SND_CLOSE

説明

メッセージ送信後，コネクションを解放します。

宣言

【C#の場合】

public const int DCCLT_SND_CLOSE

【Visual Basicの場合】

Public Const DCCLT_SND_CLOSE As Integer

【J#の場合】

public static final int DCCLT_SND_CLOSE

●DCNOFLAGS

説明

RPCの形態に同期応答型RPCを指定します。

宣言

【C#の場合】

public const int DCNOFLAGS

【Visual Basicの場合】

Public Const DCNOFLAGS As Integer

【J#の場合】

public static final int DCNOFLAGS

●DCRPC_CHAINED

説明

RPCの形態に連鎖RPCを指定します。

宣言

【C#の場合】

public const int DCRPC_CHAINED

【Visual Basicの場合】

Public Const DCRPC_CHAINED As Integer

【J#の場合】

public static final int DCRPC_CHAINED

●DCRPC_NOREPLY

説明

RPCの形態に非応答型RPCを指定します。

宣言

【C#の場合】

public const int DCRPC_NOREPLY

【Visual Basicの場合】

Public Const DCRPC_NOREPLY As Integer

【J#の場合】

public static final int DCRPC_NOREPLY

●DCRPC_RAP_AUTOCONNECT

説明

リモートAPI機能を利用したRPCを行う場合に，Client .NETが自動的にコネクションを確立するかどうかを指定します。

宣言

【C#の場合】

public const int DCRPC_RAP_AUTOCONNECT

【Visual Basicの場合】

Public Const DCRPC_RAP_AUTOCONNECT As Integer

【J#の場合】

public static final int DCRPC_RAP_AUTOCONNECT

●DCRPC_SCD_LOAD_PRIORITY

説明

サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散するかどうかを指定します。

宣言

【C#の場合】

public const int DCRPC_SCD_LOAD_PRIORITY

【Visual Basicの場合】

Public Const DCRPC_SCD_LOAD_PRIORITY As Integer

【J#の場合】

public static final int DCRPC_SCD_LOAD_PRIORITY

●DCRPC_TPNOTRAN

説明

RPCの形態にトランザクションを引き継がないRPCを指定します。

宣言

【C#の場合】

public const int DCRPC_TPNOTRAN

【Visual Basicの場合】

Public Const DCRPC_TPNOTRAN As Integer

【J#の場合】

public static final int DCRPC_TPNOTRAN

●DCRPC_WATCHTIMINHERIT

説明

リモートAPI機能を使用したRPCを行う場合に，CUP.NETの最大応答待ち時間をrapサーバ側に引き継ぐかどうかを指定します。

宣言

【C#の場合】

public const int DCRPC_WATCHTIMINHERIT

【Visual Basicの場合】

Public Const DCRPC_WATCHTIMINHERIT As Integer

【J#の場合】

public static final int DCRPC_WATCHTIMINHERIT

●DCRPC_WATCHTIMRPCINHERIT

説明

CUP.NETの最大応答待ち時間を，サーバ側に引き継ぐかどうかを指定します。

宣言

【C#の場合】

public const int DCRPC_WATCHTIMRPCINHERIT

【Visual Basicの場合】

Public Const DCRPC_WATCHTIMRPCINHERIT As Integer

【J#の場合】

public static final int DCRPC_WATCHTIMRPCINHERIT

TP1Error

TP1Errorの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.TP1Error

説明

TP1Errorクラスは，クラスライブラリの各メソッドで返されるエラーや例外に設定されるエラーの値を定義したクラスです。COBOL言語から定数値のフィールドを使用する場合は，「付録B　Client .NETで利用できるクラスのフィールド」を参照して，対応する値を指定してください。

フィールドの一覧

名称
説明

DCADMER_COMM
プロセス間の通信エラーが発生しました。

DCADMER_DEF
マルチノード構成定義に指定した値に誤りがあります。

DCADMER_MEMORY
メモリが不足しました。

DCADMER_MEMORY_ERR
標準エラー出力のデータが，領域に入り切りませんでした。

DCADMER_MEMORY_OUT
標準出力のデータが，領域に入り切りませんでした。

DCADMER_MEMORY_OUTERR
標準出力のデータと標準エラー出力のデータの両方が，領域に入り切りませんでした。

DCADMER_MULTI_DEF
システム共通定義のmulti_node_optionオペランドにNを指定しています。または，システムにTP1/Multiが組み込まれていません。

DCADMER_NODE_NOT_EXIST
ノード識別子に該当するOpenTP1ノードはありません。

DCADMER_NO_MORE_ENTRY
OpenTP1ノードは，これ以上ありません。

DCADMER_PARAM
パラメタに設定した値に誤りがあります。

DCADMER_PROTO
プロトコル不正です。

DCADMER_REMOTE
指定したOpenTP1ノードでは，マルチノード機能は使用できません。

DCADMER_STATNOTZERO
標準出力および標準エラー出力のデータを領域に格納しました。

DCADMER_STS_IO
ステータス情報の入出力エラーが発生しました。

DCADMER_SUBAREA_NOT_EXIST
メソッドのパラメタに設定した名称に該当するマルチノードサブエリアはありません。

DCADMER_SWAP
系切り替えが起こっているため，ユーザサーバの状態を取得できません。

DCADMER_SYSTEMCALL
システムコール（close，pipe，dup，またはread）の呼び出しに失敗しました。

DCLOGER_COMM
通信障害が発生しました。

DCLOGER_DEFFILE
システムの環境設定に誤りがあります。

DCLOGER_HEADER
ログサービスがメッセージログに付ける情報を取得したときに，障害が発生しました。

DCLOGER_MEMORY
メモリが不足しました。

DCLOGER_NOT_UP
ログサービスが起動していません。

DCLOGER_PARAM_ARGS
パラメタに設定した値に誤りがあります。

DCLOGER_PROTO
プロトコル不正です。

DCLOGER_TIMEOUT
メソッドのパラメタに設定した時間を超えましたが，メッセージログが通知されません。

DCNJS2ER_INTERNAL
マーシャリング処理で内部エラーが発生しました。

DCNJS2ER_INVALID_ARGS
カスタムレコードのメンバに不正な値が指定されました。

DCNJS2ER_INVALID_DATA
マーシャリング処理で不正なデータを検出しました。

DCPRFER_PARAM
パラメタに指定した値に誤りがあります。

DCRAPER_ALREADY_CONNECT
すでにrapリスナーとのコネクションは確立しています。

DCRAPER_MAX_CONNECTION
一つのプロセスからRapクラスのConnectメソッドを呼び出せる上限値を超えました。

DCRAPER_MAX_CONNECTION_SV
rapリスナーの管理するrapクライアントとのコネクション要求受付可能最大数を超えました。

DCRAPER_NETDOWN
rapリスナーとの通信でネットワーク障害が発生しました。

DCRAPER_NOCONTINUE
続行できない障害が発生しました。

DCRAPER_NOHOSTNAME
ホスト名称が解決できません。

DCRAPER_NOMEMORY
メモリ不足が発生しました。

DCRAPER_NOMEMORY_SV
rapリスナーまたはrapサーバでメモリ不足が発生しました。

DCRAPER_NOSERVICE
rapリスナーは開始処理中，または停止処理中です。

DCRAPER_NOSOCKET
ソケット不足が発生しました。

DCRAPER_PANIC_SV
rapリスナーでシステム障害が発生しました。

DCRAPER_PARAM
パラメタに誤りがあります。

DCRAPER_PROTO
プロトコル不正です。

DCRAPER_SHUTDOWN
rapリスナーは停止中です。

DCRAPER_SYSCALL
システムコールで予期しないエラーが発生しました。

DCRAPER_TIMEDOUT
rapリスナーとの通信でタイムアウトが発生しました。

DCRAPER_TIMEOUT_SV
rapリスナーサービス定義に指定したメッセージ送受信監視時間内にコネクションが確立できませんでした。

DCRAPER_UNKNOWN_NODE
接続されていないネットワーク上のrapリスナーに対してコネクションを確立しようとしています。

DCRPCER_ALL_RECEIVED
非同期応答型RPCで要求したサービスの処理結果は，すべて受信しました。

DCRPCER_FATAL
初期化に失敗しました。

DCRPCER_INVALID_ARGS
パラメタに設定した値に誤りがあります。

DCRPCER_INVALID_DES
設定した記述子は存在しません。

DCRPCER_INVALID_REPLY
サービスメソッドまたはサービス関数がOpenTP1に返した応答の長さは定義の範囲外です。

DCRPCER_MESSAGE_TOO_BIG
設定したメッセージ長が，最大値を超えています。

DCRPCER_NET_DOWN
ネットワークに障害が発生しました。

DCRPCER_NOT_TRN_EXTEND
トランザクション処理の連鎖RPCを使ったあとで，flagsパラメタにDCRPC_TPNOTRANを設定してサービスを要求しています。

DCRPCER_NO_BUFS_AT_SERVER
設定したサービスで，メモリが不足しました。

DCRPCER_NO_BUFS_RB
メモリが不足しました。このリターン値が返った場合は，トランザクションブランチをコミットできません。

DCRPCER_NO_PORT
サービスのポート番号が見つかりません。

DCRPCER_NO_SUCH_DOMAIN
ドメイン修飾をしたサービスグループ名の，ドメイン名に誤りがあります。

DCRPCER_NO_SUCH_SERVICE
設定したサービス名は，定義されていません。

DCRPCER_NO_SUCH_SERVICE_GROUP
設定したサービスグループは，定義されていません。

DCRPCER_OLTF_INITIALIZING
サービスを要求されたノードにあるOpenTP1は，開始処理中です。

DCRPCER_OLTF_NOT_UP
設定したサービスのUAPプロセスが，稼働していません。

DCRPCER_PROTO
プロトコル不正です。

DCRPCER_REPLY_TOO_BIG
返ってきた応答が，クライアントUAPで用意した領域に入り切りません。

DCRPCER_REPLY_TOO_BIG_RB
返ってきた応答が，クライアントUAPで用意した領域に入り切りません。このリターン値が返った場合は，トランザクションブランチをコミットできません。

DCRPCER_RETRY_COUNT_OVER
指定したサービスリトライ回数最大値を超えています。

DCRPCER_SECCHK
サービス要求先のSPP.NETまたはSPPは，OpenTP1のセキュリティ機能で保護されています。サービス要求したCUP.NETには，SPP.NETまたはSPPへのアクセス権限がありません。

DCRPCER_SEC_INIT
セキュリティ機能を使ったOpenTP1が，セキュリティ環境の初期化処理でエラーになりました。

DCRPCER_SERVER_BUSY
ソケット受信型サーバが，サービス要求を受け取れません。

DCRPCER_SERVICE_CLOSED
設定したサービス名があるサービスグループは，閉塞しています。

DCRPCER_SERVICE_NOT_UP
指定したサービスは実行していません。

DCRPCER_SERVICE_TERMINATED
サービスを要求されたSPP.NETまたはSPPが，処理を完了する前に異常終了しました。

DCRPCER_SERVICE_TERMINATING
設定したサービスは，終了処理中です。

DCRPCER_STANDBY_END
待機系のユーザサーバが，待機の終了を要求されました。または，系切り替え時にすでに終了していたため，待機の終了を要求されました。

DCRPCER_SYSERR
システムエラーが発生しました。

DCRPCER_SYSERR_AT_SERVER
設定したサービスで，システムエラーが発生しました。

DCRPCER_SYSERR_AT_SERVER_RB
設定したサービスで，システムエラーが発生しました。このリターン値が返った場合は，トランザクションブランチをコミットできません。

DCRPCER_SYSERR_RB
システムエラーが発生しました。このリターン値が返った場合は，トランザクションブランチをコミットできません。

DCRPCER_TESTMODE
テストモードのUAPからテストモードでないSPP.NETもしくはSPPに，またはテストモードでないUAPからテストモードのSPPにサービスを要求しています。

DCRPCER_TIMED_OUT
処理を完了する前にタイムアウトして異常終了しました。

DCRPCER_TRNCHK
複数のSPP.NETまたはSPPのトランザクション属性が一致していません。

DCRPCER_TRNCHK_EXTEND
同時に起動できるトランザクションブランチの数を超えたため，トランザクションブランチを開始できません。

DCTRNER_HAZARD
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。
しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

DCTRNER_HAZARD_NO_BEGIN
新しいトランザクションは開始できませんでした。
リターン値が返ったあと，このプロセスはトランザクション下にはありません。

DCTRNER_HEURISTIC
ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

DCTRNER_HEURISTIC_NO_BEGIN
新しいトランザクションは開始できませんでした。
リターン値が返ったあと，このプロセスはトランザクション下にはありません。

DCTRNER_NO_BEGIN
新しいトランザクションは開始できません。

DCTRNER_PROTO
プロトコル不正です。

DCTRNER_RM
リソースマネジャでエラーが発生しました。トランザクションは開始できませんでした。

DCTRNER_ROLLBACK
現在のトランザクションは，コミットできないでロールバックしました。

DCTRNER_ROLLBACK_NO_BEGIN
コミットしようとしたトランザクションを，コミットできずロールバックしました。

DCTRNER_TM
トランザクションサービスでエラーが発生しました。

フィールドの詳細

●DCADMER_COMM

説明

プロセス間の通信エラーが発生しました。

宣言

【C#の場合】

public const int DCADMER_COMM

【Visual Basicの場合】

Public Const DCADMER_COMM As Integer

【J#の場合】

public static final int DCADMER_COMM

●DCADMER_DEF

説明

マルチノード構成定義に指定した値に誤りがあります。

宣言

【C#の場合】

public const int DCADMER_DEF

【Visual Basicの場合】

Public Const DCADMER_DEF As Integer

【J#の場合】

public static final int DCADMER_DEF

●DCADMER_MEMORY

説明

メモリが不足しました。

宣言

【C#の場合】

public const int DCADMER_MEMORY

【Visual Basicの場合】

Public Const DCADMER_MEMORY As Integer

【J#の場合】

public static final int DCADMER_MEMORY

●DCADMER_MEMORY_ERR

説明

標準エラー出力のデータが，領域に入り切りませんでした。

宣言

【C#の場合】

public const int DCADMER_MEMORY_ERR

【Visual Basicの場合】

Public Const DCADMER_MEMORY_ERR As Integer

【J#の場合】

public static final int DCADMER_MEMORY_ERR

●DCADMER_MEMORY_OUT

説明

標準出力のデータが，領域に入り切りませんでした。

宣言

【C#の場合】

public const int DCADMER_MEMORY_OUT

【Visual Basicの場合】

Public Const DCADMER_MEMORY_OUT As Integer

【J#の場合】

public static final int DCADMER_MEMORY_OUT

●DCADMER_MEMORY_OUTERR

説明

標準出力のデータと標準エラー出力のデータの両方が，領域に入り切りませんでした。

宣言

【C#の場合】

public const int DCADMER_MEMORY_OUTERR

【Visual Basicの場合】

Public Const DCADMER_MEMORY_OUTERR As Integer

【J#の場合】

public static final int DCADMER_MEMORY_OUTERR

●DCADMER_MULTI_DEF

説明

システム共通定義のmulti_node_optionオペランドにNを指定しています。または，システムにTP1/Multiが組み込まれていません。

宣言

【C#の場合】

public const int DCADMER_MULTI_DEF

【Visual Basicの場合】

Public Const DCADMER_MULTI_DEF As Integer

【J#の場合】

public static final int DCADMER_MULTI_DEF

●DCADMER_NODE_NOT_EXIST

説明

ノード識別子に該当するOpenTP1ノードはありません。

宣言

【C#の場合】

public const int DCADMER_NODE_NOT_EXIST

【Visual Basicの場合】

Public Const DCADMER_NODE_NOT_EXIST As Integer

【J#の場合】

public static final int DCADMER_NODE_NOT_EXIST

●DCADMER_NO_MORE_ENTRY

説明

OpenTP1ノードは，これ以上ありません。

宣言

【C#の場合】

public const int DCADMER_NO_MORE_ENTRY

【Visual Basicの場合】

Public Const DCADMER_NO_MORE_ENTRY As Integer

【J#の場合】

public static final int DCADMER_NO_MORE_ENTRY

●DCADMER_PARAM

説明

パラメタに設定した値に誤りがあります。

宣言

【C#の場合】

public const int DCADMER_PARAM

【Visual Basicの場合】

Public Const DCADMER_PARAM As Integer

【J#の場合】

public static final int DCADMER_PARAM

●DCADMER_PROTO

説明

プロトコル不正です。

宣言

【C#の場合】

public const int DCADMER_PROTO

【Visual Basicの場合】

Public Const DCADMER_PROTO As Integer

【J#の場合】

public static final int DCADMER_PROTO

●DCADMER_REMOTE

説明

指定したOpenTP1ノードでは，マルチノード機能は使用できません。

宣言

【C#の場合】

public const int DCADMER_REMOTE

【Visual Basicの場合】

Public Const DCADMER_REMOTE As Integer

【J#の場合】

public static final int DCADMER_REMOTE

●DCADMER_STATNOTZERO

説明

標準出力および標準エラー出力のデータを領域に格納しました。

宣言

【C#の場合】

public const int DCADMER_STATNOTZERO

【Visual Basicの場合】

Public Const DCADMER_STATNOTZERO As Integer

【J#の場合】

public static final int DCADMER_STATNOTZERO

●DCADMER_STS_IO

説明

ステータス情報の入出力エラーが発生しました。

宣言

【C#の場合】

public const int DCADMER_STS_IO

【Visual Basicの場合】

Public Const DCADMER_STS_IO As Integer

【J#の場合】

public static final int DCADMER_STS_IO

●DCADMER_SUBAREA_NOT_EXIST

説明

メソッドのパラメタに設定した名称に該当するマルチノードサブエリアはありません。

宣言

【C#の場合】

public const int DCADMER_SUBAREA_NOT_EXIST

【Visual Basicの場合】

Public Const DCADMER_SUBAREA_NOT_EXIST As Integer

【J#の場合】

public static final int DCADMER_SUBAREA_NOT_EXIST

●DCADMER_SWAP

説明

系切り替えが起こっているため，ユーザサーバの状態を取得できません。

宣言

【C#の場合】

public const int DCADMER_SWAP

【Visual Basicの場合】

Public Const DCADMER_SWAP As Integer

【J#の場合】

public static final int DCADMER_SWAP

●DCADMER_SYSTEMCALL

説明

システムコール（close，pipe，dup，またはread）の呼び出しに失敗しました。

宣言

【C#の場合】

public const int DCADMER_SYSTEMCALL

【Visual Basicの場合】

Public Const DCADMER_SYSTEMCALL As Integer

【J#の場合】

public static final int DCADMER_SYSTEMCALL

●DCLOGER_COMM

説明

通信障害が発生しました。

宣言

【C#の場合】

public const int DCLOGER_COMM

【Visual Basicの場合】

Public Const DCLOGER_COMM As Integer

【J#の場合】

public static final int DCLOGER_COMM

●DCLOGER_DEFFILE

説明

システムの環境設定に誤りがあります。

宣言

【C#の場合】

public const int DCLOGER_DEFFILE

【Visual Basicの場合】

Public Const DCLOGER_DEFFILE As Integer

【J#の場合】

public static final int DCLOGER_DEFFILE

●DCLOGER_HEADER

説明

ログサービスがメッセージログに付ける情報を取得したときに，障害が発生しました。

宣言

【C#の場合】

public const int DCLOGER_HEADER

【Visual Basicの場合】

Public Const DCLOGER_HEADER As Integer

【J#の場合】

public static final int DCLOGER_HEADER

●DCLOGER_MEMORY

説明

メモリが不足しました。

宣言

【C#の場合】

public const int DCLOGER_MEMORY

【Visual Basicの場合】

Public Const DCLOGER_MEMORY As Integer

【J#の場合】

public static final int DCLOGER_MEMORY

●DCLOGER_NOT_UP

説明

ログサービスが起動していません。

宣言

【C#の場合】

public const int DCLOGER_NOT_UP

【Visual Basicの場合】

Public Const DCLOGER_NOT_UP As Integer

【J#の場合】

public static final int DCLOGER_NOT_UP

●DCLOGER_PARAM_ARGS

説明

パラメタに設定した値に誤りがあります。

宣言

【C#の場合】

public const int DCLOGER_PARAM_ARGS

【Visual Basicの場合】

Public Const DCLOGER_PARAM_ARGS As Integer

【J#の場合】

public static final int DCLOGER_PARAM_ARGS

●DCLOGER_PROTO

説明

プロトコル不正です。

宣言

【C#の場合】

public const int DCLOGER_PROTO

【Visual Basicの場合】

Public Const DCLOGER_PROTO As Integer

【J#の場合】

public static final int DCLOGER_PROTO

●DCLOGER_TIMEOUT

説明

メソッドのパラメタに設定した時間を超えましたが，メッセージログが通知されません。

宣言

【C#の場合】

public const int DCLOGER_TIMEOUT

【Visual Basicの場合】

Public Const DCLOGER_TIMEOUT As Integer

【J#の場合】

public static final int DCLOGER_TIMEOUT

●DCNJS2ER_INTERNAL

説明

マーシャリング処理で内部エラーが発生しました。

宣言

【C#の場合】

public const int DCNJS2ER_INTERNAL

【Visual Basicの場合】

Public Const DCNJS2ER_INTERNAL As Integer

【J#の場合】

public static final int DCNJS2ER_INTERNAL

●DCNJS2ER_INVALID_ARGS

説明

カスタムレコードのメンバに不正な値が指定されました。

宣言

【C#の場合】

public const int DCNJS2ER_INVALID_ARGS

【Visual Basicの場合】

Public Const DCNJS2ER_INVALID_ARGS As Integer

【J#の場合】

public static final int DCNJS2ER_INVALID_ARGS

●DCNJS2ER_INVALID_DATA

説明

マーシャリング処理で不正なデータを検出しました。

宣言

【C#の場合】

public const int DCNJS2ER_INVALID_DATA

【Visual Basicの場合】

Public Const DCNJS2ER_INVALID_DATA As Integer

【J#の場合】

public static final int DCNJS2ER_INVALID_DATA

●DCPRFER_PARAM

説明

パラメタに指定した値に誤りがあります。

宣言

【C#の場合】

public const int DCPRFER_PARAM

【Visual Basicの場合】

Public Const DCPRFER_PARAM As Integer

【J#の場合】

public static final int DCPRFER_PARAM

●DCRAPER_ALREADY_CONNECT

説明

すでにrapリスナーとのコネクションは確立しています。

宣言

【C#の場合】

public const int DCRAPER_ALREADY_CONNECT

【Visual Basicの場合】

Public Const DCRAPER_ALREADY_CONNECT As Integer

【J#の場合】

public static final int DCRAPER_ALREADY_CONNECT

●DCRAPER_MAX_CONNECTION

説明

一つのプロセスからRapクラスのConnectメソッドを呼び出せる上限値を超えました。

宣言

【C#の場合】

public const int DCRAPER_MAX_CONNECTION

【Visual Basicの場合】

Public Const DCRAPER_MAX_CONNECTION As Integer

【J#の場合】

public static final int DCRAPER_MAX_CONNECTION

●DCRAPER_MAX_CONNECTION_SV

説明

rapリスナーの管理するrapクライアントとのコネクション要求受付可能最大数を超えました。

宣言

【C#の場合】

public const int DCRAPER_MAX_CONNECTION_SV

【Visual Basicの場合】

Public Const DCRAPER_MAX_CONNECTION_SV As Integer

【J#の場合】

public static final int DCRAPER_MAX_CONNECTION_SV

●DCRAPER_NETDOWN

説明

rapリスナーとの通信でネットワーク障害が発生しました。

宣言

【C#の場合】

public const int DCRAPER_NETDOWN

【Visual Basicの場合】

Public Const DCRAPER_NETDOWN As Integer

【J#の場合】

public static final int DCRAPER_NETDOWN

●DCRAPER_NOCONTINUE

説明

続行できない障害が発生しました。

宣言

【C#の場合】

public const int DCRAPER_NOCONTINUE

【Visual Basicの場合】

Public Const DCRAPER_NOCONTINUE As Integer

【J#の場合】

public static final int DCRAPER_NOCONTINUE

●DCRAPER_NOHOSTNAME

説明

ホスト名称が解決できません。

宣言

【C#の場合】

public const int DCRAPER_NOHOSTNAME

【Visual Basicの場合】

Public Const DCRAPER_NOHOSTNAME As Integer

【J#の場合】

public static final int DCRAPER_NOHOSTNAME

●DCRAPER_NOMEMORY

説明

メモリ不足が発生しました。

宣言

【C#の場合】

public const int DCRAPER_NOMEMORY

【Visual Basicの場合】

Public Const DCRAPER_NOMEMORY As Integer

【J#の場合】

public static final int DCRAPER_NOMEMORY

●DCRAPER_NOMEMORY_SV

説明

rapリスナーまたはrapサーバでメモリ不足が発生しました。

宣言

【C#の場合】

public const int DCRAPER_NOMEMORY_SV

【Visual Basicの場合】

Public Const DCRAPER_NOMEMORY_SV As Integer

【J#の場合】

public static final int DCRAPER_NOMEMORY_SV

●DCRAPER_NOSERVICE

説明

rapリスナーは開始処理中，または停止処理中です。

宣言

【C#の場合】

public const int DCRAPER_NOSERVICE

【Visual Basicの場合】

Public Const DCRAPER_NOSERVICE As Integer

【J#の場合】

public static final int DCRAPER_NOSERVICE

●DCRAPER_NOSOCKET

説明

ソケット不足が発生しました。

宣言

【C#の場合】

public const int DCRAPER_NOSOCKET

【Visual Basicの場合】

Public Const DCRAPER_NOSOCKET As Integer

【J#の場合】

public static final int DCRAPER_NOSOCKET

●DCRAPER_PANIC_SV

説明

rapリスナーでシステム障害が発生しました。

宣言

【C#の場合】

public const int DCRAPER_PANIC_SV

【Visual Basicの場合】

Public Const DCRAPER_PANIC_SV As Integer

【J#の場合】

public static final int DCRAPER_PANIC_SV

●DCRAPER_PARAM

説明

パラメタに誤りがあります。

宣言

【C#の場合】

public const int DCRAPER_PARAM

【Visual Basicの場合】

Public Const DCRAPER_PARAM As Integer

【J#の場合】

public static final int DCRAPER_PARAM

●DCRAPER_PROTO

説明

プロトコル不正です。

宣言

【C#の場合】

public const int DCRAPER_PROTO

【Visual Basicの場合】

Public Const DCRAPER_PROTO As Integer

【J#の場合】

public static final int DCRAPER_PROTO

●DCRAPER_SHUTDOWN

説明

rapリスナーは停止中です。

宣言

【C#の場合】

public const int DCRAPER_SHUTDOWN

【Visual Basicの場合】

Public Const DCRAPER_SHUTDOWN As Integer

【J#の場合】

public static final int DCRAPER_SHUTDOWN

●DCRAPER_SYSCALL

説明

システムコールで予期しないエラーが発生しました。

宣言

【C#の場合】

public const int DCRAPER_SYSCALL

【Visual Basicの場合】

Public Const DCRAPER_SYSCALL As Integer

【J#の場合】

public static final int DCRAPER_SYSCALL

●DCRAPER_TIMEDOUT

説明

rapリスナーとの通信でタイムアウトが発生しました。

宣言

【C#の場合】

public const int DCRAPER_TIMEDOUT

【Visual Basicの場合】

Public Const DCRAPER_TIMEDOUT As Integer

【J#の場合】

public static final int DCRAPER_TIMEDOUT

●DCRAPER_TIMEOUT_SV

説明

rapリスナーサービス定義に指定したメッセージ送受信監視時間内にコネクションが確立できませんでした。

宣言

【C#の場合】

public const int DCRAPER_TIMEOUT_SV

【Visual Basicの場合】

Public Const DCRAPER_TIMEOUT_SV As Integer

【J#の場合】

public static final int DCRAPER_TIMEOUT_SV

●DCRAPER_UNKNOWN_NODE

説明

接続されていないネットワーク上のrapリスナーに対してコネクションを確立しようとしています。

宣言

【C#の場合】

public const int DCRAPER_UNKNOWN_NODE

【Visual Basicの場合】

Public Const DCRAPER_UNKNOWN_NODE As Integer

【J#の場合】

public static final int DCRAPER_UNKNOWN_NODE

●DCRPCER_ALL_RECEIVED

説明

非同期応答型RPCで要求したサービスの処理結果は，すべて受信しました。

宣言

【C#の場合】

public const int DCRPCER_ALL_RECEIVED

【Visual Basicの場合】

Public Const DCRPCER_ALL_RECEIVED As Integer

【J#の場合】

public static final int DCRPCER_ALL_RECEIVED

●DCRPCER_FATAL

説明

初期化に失敗しました。

宣言

【C#の場合】

public const int DCRPCER_FATAL

【Visual Basicの場合】

Public Const DCRPCER_FATAL As Integer

【J#の場合】

public static final int DCRPCER_FATAL

●DCRPCER_INVALID_ARGS

説明

パラメタに設定した値に誤りがあります。

宣言

【C#の場合】

public const int DCRPCER_INVALID_ARGS

【Visual Basicの場合】

Public Const DCRPCER_INVALID_ARGS As Integer

【J#の場合】

public static final int DCRPCER_INVALID_ARGS

●DCRPCER_INVALID_DES

説明

設定した記述子は存在しません。

宣言

【C#の場合】

public const int DCRPCER_INVALID_DES

【Visual Basicの場合】

Public Const DCRPCER_INVALID_DES As Integer

【J#の場合】

public static final int DCRPCER_INVALID_DES

●DCRPCER_INVALID_REPLY

説明

サービスメソッドまたはサービス関数がOpenTP1に返した応答の長さは定義の範囲外です。

宣言

【C#の場合】

public const int DCRPCER_INVALID_REPLY

【Visual Basicの場合】

Public Const DCRPCER_INVALID_REPLY As Integer

【J#の場合】

public static final int DCRPCER_INVALID_REPLY

●DCRPCER_MESSAGE_TOO_BIG

説明

設定したメッセージ長が，最大値を超えています。

宣言

【C#の場合】

public const int DCRPCER_MESSAGE_TOO_BIG

【Visual Basicの場合】

Public Const DCRPCER_MESSAGE_TOO_BIG As Integer

【J#の場合】

public static final int DCRPCER_MESSAGE_TOO_BIG

●DCRPCER_NET_DOWN

説明

ネットワークに障害が発生しました。

宣言

【C#の場合】

public const int DCRPCER_NET_DOWN

【Visual Basicの場合】

Public Const DCRPCER_NET_DOWN As Integer

【J#の場合】

public static final int DCRPCER_NET_DOWN

●DCRPCER_NOT_TRN_EXTEND

説明

トランザクション処理の連鎖RPCを使ったあとで，flagsパラメタにDCRPC_TPNOTRANを設定してサービスを要求しています。

宣言

【C#の場合】

public const int DCRPCER_NOT_TRN_EXTEND

【Visual Basicの場合】

Public Const DCRPCER_NOT_TRN_EXTEND As Integer

【J#の場合】

public static final int DCRPCER_NOT_TRN_EXTEND

●DCRPCER_NO_BUFS_AT_SERVER

説明

設定したサービスで，メモリが不足しました。

宣言

【C#の場合】

public const int DCRPCER_NO_BUFS_AT_SERVER

【Visual Basicの場合】

Public Const DCRPCER_NO_BUFS_AT_SERVER As Integer

【J#の場合】

public static final int DCRPCER_NO_BUFS_AT_SERVER

●DCRPCER_NO_BUFS_RB

説明

メモリが不足しました。このリターン値が返った場合は，トランザクションブランチをコミットできません。

宣言

【C#の場合】

public const int DCRPCER_NO_BUFS_RB

【Visual Basicの場合】

Public Const DCRPCER_NO_BUFS_RB As Integer

【J#の場合】

public static final int DCRPCER_NO_BUFS_RB

●DCRPCER_NO_PORT

説明

サービスのポート番号が見つかりません。

宣言

【C#の場合】

public const int DCRPCER_NO_PORT

【Visual Basicの場合】

Public Const DCRPCER_NO_PORT As Integer

【J#の場合】

public static final int DCRPCER_NO_PORT

●DCRPCER_NO_SUCH_DOMAIN

説明

ドメイン修飾をしたサービスグループ名の，ドメイン名に誤りがあります。

宣言

【C#の場合】

public const int DCRPCER_NO_SUCH_DOMAIN

【Visual Basicの場合】

Public Const DCRPCER_NO_SUCH_DOMAIN As Integer

【J#の場合】

public static final int DCRPCER_NO_SUCH_DOMAIN

●DCRPCER_NO_SUCH_SERVICE

説明

設定したサービス名は，定義されていません。

宣言

【C#の場合】

public const int DCRPCER_NO_SUCH_SERVICE

【Visual Basicの場合】

Public Const DCRPCER_NO_SUCH_SERVICE As Integer

【J#の場合】

public static final int DCRPCER_NO_SUCH_SERVICE

●DCRPCER_NO_SUCH_SERVICE_GROUP

説明

設定したサービスグループは，定義されていません。

宣言

【C#の場合】

public const int DCRPCER_NO_SUCH_SERVICE_GROUP

【Visual Basicの場合】

Public Const DCRPCER_NO_SUCH_SERVICE_GROUP As Integer

【J#の場合】

public static final int DCRPCER_NO_SUCH_SERVICE_GROUP

●DCRPCER_OLTF_INITIALIZING

説明

サービスを要求されたノードにあるOpenTP1は，開始処理中です。

宣言

【C#の場合】

public const int DCRPCER_OLTF_INITIALIZING

【Visual Basicの場合】

Public Const DCRPCER_OLTF_INITIALIZING As Integer

【J#の場合】

public static final int DCRPCER_OLTF_INITIALIZING

●DCRPCER_OLTF_NOT_UP

説明

設定したサービスのUAPプロセスが，稼働していません。

宣言

【C#の場合】

public const int DCRPCER_OLTF_NOT_UP

【Visual Basicの場合】

Public Const DCRPCER_OLTF_NOT_UP As Integer

【J#の場合】

public static final int DCRPCER_OLTF_NOT_UP

●DCRPCER_PROTO

説明

プロトコル不正です。

宣言

【C#の場合】

public const int DCRPCER_PROTO

【Visual Basicの場合】

Public Const DCRPCER_PROTO As Integer

【J#の場合】

public static final int DCRPCER_PROTO

●DCRPCER_REPLY_TOO_BIG

説明

返ってきた応答が，クライアントUAPで用意した領域に入り切りません。

宣言

【C#の場合】

public const int DCRPCER_REPLY_TOO_BIG

【Visual Basicの場合】

Public Const DCRPCER_REPLY_TOO_BIG As Integer

【J#の場合】

public static final int DCRPCER_REPLY_TOO_BIG

●DCRPCER_REPLY_TOO_BIG_RB

説明

返ってきた応答が，クライアントUAPで用意した領域に入り切りません。このリターン値が返った場合は，トランザクションブランチをコミットできません。

宣言

【C#の場合】

public const int DCRPCER_REPLY_TOO_BIG_RB

【Visual Basicの場合】

Public Const DCRPCER_REPLY_TOO_BIG_RB As Integer

【J#の場合】

public static final int DCRPCER_REPLY_TOO_BIG_RB

●DCRPCER_RETRY_COUNT_OVER

説明

指定したサービスリトライ回数最大値を超えています。

宣言

【C#の場合】

public const int DCRPCER_RETRY_COUNT_OVER

【Visual Basicの場合】

Public Const DCRPCER_RETRY_COUNT_OVER As Integer

【J#の場合】

public static final int DCRPCER_RETRY_COUNT_OVER

●DCRPCER_SECCHK

説明

サービス要求先のSPP.NETまたはSPPは，OpenTP1のセキュリティ機能で保護されています。サービス要求したCUP.NETには，SPP.NETまたはSPPへのアクセス権限がありません。

宣言

【C#の場合】

public const int DCRPCER_SECCHK

【Visual Basicの場合】

Public Const DCRPCER_SECCHK As Integer

【J#の場合】

public static final int DCRPCER_SECCHK

●DCRPCER_SEC_INIT

説明

セキュリティ機能を使ったOpenTP1が，セキュリティ環境の初期化処理でエラーになりました。

宣言

【C#の場合】

public const int DCRPCER_SEC_INIT

【Visual Basicの場合】

Public Const DCRPCER_SEC_INIT As Integer

【J#の場合】

public static final int DCRPCER_SEC_INIT

●DCRPCER_SERVER_BUSY

説明

ソケット受信型サーバが，サービス要求を受け取れません。

宣言

【C#の場合】

public const int DCRPCER_SERVER_BUSY

【Visual Basicの場合】

Public Const DCRPCER_SERVER_BUSY As Integer

【J#の場合】

public static final int DCRPCER_SERVER_BUSY

●DCRPCER_SERVICE_CLOSED

説明

設定したサービス名があるサービスグループは，閉塞しています。

宣言

【C#の場合】

public const int DCRPCER_SERVICE_CLOSED

【Visual Basicの場合】

Public Const DCRPCER_SERVICE_CLOSED As Integer

【J#の場合】

public static final int DCRPCER_SERVICE_CLOSED

●DCRPCER_SERVICE_NOT_UP

説明

指定したサービスは実行していません。

宣言

【C#の場合】

public const int DCRPCER_SERVICE_NOT_UP

【Visual Basicの場合】

Public Const DCRPCER_SERVICE_NOT_UP As Integer

【J#の場合】

public static final int DCRPCER_SERVICE_NOT_UP

●DCRPCER_SERVICE_TERMINATED

説明

サービスを要求されたSPP.NETまたはSPPが，処理を完了する前に異常終了しました。

宣言

【C#の場合】

public const int DCRPCER_SERVICE_TERMINATED

【Visual Basicの場合】

Public Const DCRPCER_SERVICE_TERMINATED As Integer

【J#の場合】

public static final int DCRPCER_SERVICE_TERMINATED

●DCRPCER_SERVICE_TERMINATING

説明

設定したサービスは，終了処理中です。

宣言

【C#の場合】

public const int DCRPCER_SERVICE_TERMINATING

【Visual Basicの場合】

Public Const DCRPCER_SERVICE_TERMINATING As Integer

【J#の場合】

public static final int DCRPCER_SERVICE_TERMINATING

●DCRPCER_STANDBY_END

説明

待機系のユーザサーバが，待機の終了を要求されました。または，系切り替え時にすでに終了していたため，待機の終了を要求されました。

宣言

【C#の場合】

public const int DCRPCER_STANDBY_END

【Visual Basicの場合】

Public Const DCRPCER_STANDBY_END As Integer

【J#の場合】

public static final int DCRPCER_STANDBY_END

●DCRPCER_SYSERR

説明

システムエラーが発生しました。

宣言

【C#の場合】

public const int DCRPCER_SYSERR

【Visual Basicの場合】

Public Const DCRPCER_SYSERR As Integer

【J#の場合】

public static final int DCRPCER_SYSERR

●DCRPCER_SYSERR_AT_SERVER

説明

設定したサービスで，システムエラーが発生しました。

宣言

【C#の場合】

public const int DCRPCER_SYSERR_AT_SERVER

【Visual Basicの場合】

Public Const DCRPCER_SYSERR_AT_SERVER As Integer

【J#の場合】

public static final int DCRPCER_SYSERR_AT_SERVER

●DCRPCER_SYSERR_AT_SERVER_RB

説明

設定したサービスで，システムエラーが発生しました。このリターン値が返った場合は，トランザクションブランチをコミットできません。

宣言

【C#の場合】

public const int DCRPCER_SYSERR_AT_SERVER_RB

【Visual Basicの場合】

Public Const DCRPCER_SYSERR_AT_SERVER_RB As Integer

【J#の場合】

public static final int DCRPCER_SYSERR_AT_SERVER_RB

●DCRPCER_SYSERR_RB

説明

システムエラーが発生しました。このリターン値が返った場合は，トランザクションブランチをコミットできません。

宣言

【C#の場合】

public const int DCRPCER_SYSERR_RB

【Visual Basicの場合】

Public Const DCRPCER_SYSERR_RB As Integer

【J#の場合】

public static final int DCRPCER_SYSERR_RB

●DCRPCER_TESTMODE

説明

テストモードのUAPからテストモードでないSPP.NETもしくはSPPに，またはテストモードでないUAPからテストモードのSPPにサービスを要求しています。

宣言

【C#の場合】

public const int DCRPCER_TESTMODE

【Visual Basicの場合】

Public Const DCRPCER_TESTMODE As Integer

【J#の場合】

public static final int DCRPCER_TESTMODE

●DCRPCER_TIMED_OUT

説明

処理を完了する前にタイムアウトして異常終了しました。

宣言

【C#の場合】

public const int DCRPCER_TIMED_OUT

【Visual Basicの場合】

Public Const DCRPCER_TIMED_OUT As Integer

【J#の場合】

public static final int DCRPCER_TIMED_OUT

●DCRPCER_TRNCHK

説明

複数のSPP.NETまたはSPPのトランザクション属性が一致していません。

宣言

【C#の場合】

public const int DCRPCER_TRNCHK

【Visual Basicの場合】

Public Const DCRPCER_TRNCHK As Integer

【J#の場合】

public static final int DCRPCER_TRNCHK

●DCRPCER_TRNCHK_EXTEND

説明

同時に起動できるトランザクションブランチの数を超えたため，トランザクションブランチを開始できません。

宣言

【C#の場合】

public const int DCRPCER_TRNCHK_EXTEND

【Visual Basicの場合】

Public Const DCRPCER_TRNCHK_EXTEND As Integer

【J#の場合】

public static final int DCRPCER_TRNCHK_EXTEND

●DCTRNER_HAZARD

説明

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。

しかし，障害のため，ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

宣言

【C#の場合】

public const int DCTRNER_HAZARD

【Visual Basicの場合】

Public Const DCTRNER_HAZARD As Integer

【J#の場合】

public static final int DCTRNER_HAZARD

●DCTRNER_HAZARD_NO_BEGIN

説明

新しいトランザクションは開始できませんでした。

リターン値が返ったあと，このプロセスはトランザクション下にはありません。

宣言

【C#の場合】

public const int DCTRNER_HAZARD_NO_BEGIN

【Visual Basicの場合】

Public Const DCTRNER_HAZARD_NO_BEGIN As Integer

【J#の場合】

public static final int DCTRNER_HAZARD_NO_BEGIN

●DCTRNER_HEURISTIC

説明

ヒューリスティック決定のため，あるトランザクションブランチはコミットし，あるトランザクションブランチはロールバックしました。

宣言

【C#の場合】

public const int DCTRNER_HEURISTIC

【Visual Basicの場合】

Public Const DCTRNER_HEURISTIC As Integer

【J#の場合】

public static final int DCTRNER_HEURISTIC

●DCTRNER_HEURISTIC_NO_BEGIN

説明

新しいトランザクションは開始できませんでした。

リターン値が返ったあと，このプロセスはトランザクション下にはありません。

宣言

【C#の場合】

public const int DCTRNER_HEURISTIC_NO_BEGIN

【Visual Basicの場合】

Public Const DCTRNER_HEURISTIC_NO_BEGIN As Integer

【J#の場合】

public static final int DCTRNER_HEURISTIC_NO_BEGIN

●DCTRNER_NO_BEGIN

説明

新しいトランザクションは開始できません。

宣言

【C#の場合】

public const int DCTRNER_NO_BEGIN

【Visual Basicの場合】

Public Const DCTRNER_NO_BEGIN As Integer

【J#の場合】

public static final int DCTRNER_NO_BEGIN

●DCTRNER_PROTO

説明

プロトコル不正です。

宣言

【C#の場合】

public const int DCTRNER_PROTO

【Visual Basicの場合】

Public Const DCTRNER_PROTO As Integer

【J#の場合】

public static final int DCTRNER_PROTO

●DCTRNER_RM

説明

リソースマネジャでエラーが発生しました。トランザクションは開始できませんでした。

宣言

【C#の場合】

public const int DCTRNER_RM

【Visual Basicの場合】

Public Const DCTRNER_RM As Integer

【J#の場合】

public static final int DCTRNER_RM

●DCTRNER_ROLLBACK

説明

現在のトランザクションは，コミットできないでロールバックしました。

宣言

【C#の場合】

public const int DCTRNER_ROLLBACK

【Visual Basicの場合】

Public Const DCTRNER_ROLLBACK As Integer

【J#の場合】

public static final int DCTRNER_ROLLBACK

●DCTRNER_ROLLBACK_NO_BEGIN

説明

コミットしようとしたトランザクションを，コミットできずロールバックしました。

宣言

【C#の場合】

public const int DCTRNER_ROLLBACK_NO_BEGIN

【Visual Basicの場合】

Public Const DCTRNER_ROLLBACK_NO_BEGIN As Integer

【J#の場合】

public static final int DCTRNER_ROLLBACK_NO_BEGIN

●DCTRNER_TM

説明

トランザクションサービスでエラーが発生しました。

宣言

【C#の場合】

public const int DCTRNER_TM

【Visual Basicの場合】

Public Const DCTRNER_TM As Integer

【J#の場合】

public static final int DCTRNER_TM

TP1Exception

TP1Exceptionの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

（例外の共通基底クラス）

TP1Exceptionクラスは，OpenTP1 for .NET Frameworkで使用するExceptionクラスの基底となるクラスです。

プロパティの一覧

名称 | 説明
ErrorCode | エラーコードを返します。

メソッドの一覧

名称 | 説明
ToString() | このExceptionクラスを表す文字列を返します。

プロパティの詳細

●ErrorCode

説明

エラーコードを返します。

宣言

【C#の場合】

public int ErrorCode {get;}

【Visual Basicの場合】

Public ReadOnly Property ErrorCode As Integer

【J#の場合】

public int get_ErrorCode();

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY ErrorCode IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-LONG.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

例外

なし

メソッドの詳細

●ToString

説明

このExceptionクラスを表す，次の形式の文字列を返します。

Exceptionクラスの名称: Messageプロパティの値

ErrorCode = ErrorCodeプロパティの値

InnerExceptionプロパティのToStringメソッドの値

StackTraceプロパティの値

宣言

【C#の場合】

public virtual string ToString(
);

【Visual Basicの場合】

Public Overridable Function ToString( _
) As String

【J#の場合】

public System.String ToString(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. ToString PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 RESULT  USAGE STRING.
PROCEDURE DIVISION RETURNING RESULT.
END METHOD ToString.

パラメタ

なし

戻り値

このExceptionクラスを表す文字列。

例外

なし

TP1MarshalException

TP1MarshalExceptionの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.TP1MarshalException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

TP1MarshalExceptionクラスは，読み込みおよび書き込みができないバイト配列のインデクスが参照された場合，またはデータの内容が不正な場合に出力される例外です。

TP1RemoteException

TP1RemoteExceptionの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.TP1RemoteException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

（リモート受信例外）

TP1RemoteExceptionクラスは，SPP.NETで例外が発生したことをSPP.NET，SUP.NET，またはCUP.NETに知らせる例外です。

プロパティの一覧

名称 | 説明
ExceptionMessage | SPP.NETで発生した例外のエラーメッセージの文字列を返します。
ExceptionName | SPP.NETで発生した例外の名前を返します。

メソッドの一覧

名称 | 説明
ToString() | このExceptionクラスを表す文字列を返します。

プロパティの詳細

●ExceptionMessage

説明

SPP.NETで発生した例外のエラーメッセージの文字列を返します。

宣言

【C#の場合】

public string ExceptionMessage {get;}

【Visual Basicの場合】

Public ReadOnly Property ExceptionMessage As String

【J#の場合】

public System.String get_ExceptionMessage();

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY ExceptionMessage IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 RESULT  USAGE STRING.
PROCEDURE DIVISION RETURNING RESULT.
END METHOD.

例外

なし

●ExceptionName

説明

SPP.NETで発生した例外の名前を返します。

宣言

【C#の場合】

public string ExceptionName {get;}

【Visual Basicの場合】

Public ReadOnly Property ExceptionName As String

【J#の場合】

public System.String get_ExceptionName();

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY ExceptionName IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 RESULT  USAGE STRING.
PROCEDURE DIVISION RETURNING RESULT.
END METHOD.

例外

なし

メソッドの詳細

●ToString

説明

このExceptionクラスを表す，次の形式の文字列を返します。

Exceptionクラスの名称: Messageプロパティの値

ErrorCode = ErrorCodeプロパティの値

ExceptionName = ExceptionNameプロパティの値

ExceptionMessage = ExceptionMessageプロパティの値

StackTraceプロパティの値

宣言

【C#の場合】

public virtual string ToString(
);

【Visual Basicの場合】

Public Overridable Function ToString( _
) As String

【J#の場合】

public System.String ToString(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. ToString PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 RESULT  USAGE STRING.
PROCEDURE DIVISION RETURNING RESULT.
END METHOD ToString.

パラメタ

なし

戻り値

このExceptionクラスを表す文字列。

例外

なし

TP1RpcMethod

TP1RpcMethodの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- System.Attribute
   +- Hitachi.OpenTP1.TP1RpcMethod

説明

サービスメソッドカスタムパラメタです。

コンストラクタの一覧

名称 | 説明
TP1RpcMethod() | TP1RpcMethodのコンストラクタです。

コンストラクタの詳細

●TP1RpcMethod

説明

TP1RpcMethodのコンストラクタです。

宣言

【C#の場合】

public TP1RpcMethod(
);

【Visual Basicの場合】

Public New( _
)

【J#の場合】

public TP1RpcMethod(
);

パラメタ

なし

例外

なし

TP1UserException

TP1UserExceptionの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- System.Exception
   +- Hitachi.OpenTP1.TP1Exception
     +- Hitachi.OpenTP1.TP1UserException

実装インタフェース

System.Runtime.Serialization.ISerializable

説明

（ユーザアプリケーションプログラム例外）

TP1UserExceptionクラスは，SPP.NETのサービスメソッド内でユーザがスローする例外です。

サービス呼び出し元のSUP.NETおよびCUP.NETでは例外情報から復元してユーザにスローします。

コンストラクタの一覧

名称 | 説明
TP1UserException(System.Int32, System.String) | TP1UserExceptionのコンストラクタです。
TP1UserException(System.Int32, System.String, System.String) | エラーコード，エラー情報，およびこの例外の原因を説明するメッセージを指定するコンストラクタです。

プロパティの一覧

名称 | 説明
Information | エラー情報の文字列を返します。

メソッドの一覧

名称 | 説明
ToString() | このExceptionクラスを表す文字列を返します。

コンストラクタの詳細

●TP1UserException

説明

TP1UserExceptionのコンストラクタです。

宣言

【C#の場合】

public TP1UserException(
 int errCode,
 string argInfo
);

【Visual Basicの場合】

Public New( _
 ByVal errCode As Integer, _
 ByVal argInfo As String _
)

【J#の場合】

public TP1UserException(
 int errCode,
 System.String argInfo
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
AUTO-METHOD. CONSTRUCTOR.
DATA DIVISION.
LINKAGE SECTION.
01 errCode   USAGE BINARY-LONG.
01 argInfo   USAGE STRING.
PROCEDURE DIVISION USING BY VALUE errCode BY VALUE argInfo.
END AUTO-METHOD.

パラメタ

errCode

エラーコードです。

argInfo

エラー情報です。

例外

なし

●TP1UserException

説明

エラーコード，エラー情報，および例外の原因を説明するメッセージを指定するコンストラクタです。

宣言

【C#の場合】

public TP1UserException(
 int errCode,
 string argInfo,
 string message
);

【Visual Basicの場合】

Public New( _
 ByVal errCode As Integer, _
 ByVal argInfo As String, _
 ByVal message As String _
)

【J#の場合】

public TP1UserException(
 int errCode,
 System.String argInfo,
 System.String message
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
AUTO-METHOD. CONSTRUCTOR.
DATA DIVISION.
LINKAGE SECTION.
01 errCode   USAGE BINARY-LONG.
01 argInfo   USAGE STRING.
01 message   USAGE STRING.
PROCEDURE DIVISION USING BY VALUE errCode BY VALUE argInfo BY VALUE message.
END AUTO-METHOD.

パラメタ

errCode

エラーコードです。

argInfo

エラー情報です。

message

例外の原因を説明するエラーメッセージです。

例外

なし

プロパティの詳細

●Information

説明

エラー情報の文字列を返します。

宣言

【C#の場合】

public string Information {get;}

【Visual Basicの場合】

Public ReadOnly Property Information As String

【J#の場合】

public System.String get_Information();

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Information IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 RESULT  USAGE STRING.
PROCEDURE DIVISION RETURNING RESULT.
END METHOD.

例外

なし

メソッドの詳細

●ToString

説明

このExceptionクラスを表す，次の形式の文字列を返します。

Exceptionクラスの名称: Messageプロパティの値

ErrorCode = ErrorCodeプロパティの値

Information = Informationプロパティの値

StackTraceプロパティの値

宣言

【C#の場合】

public virtual string ToString(
);

【Visual Basicの場合】

Public Overridable Function ToString( _
) As String

【J#の場合】

public System.String ToString(
);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. ToString PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 RESULT  USAGE STRING.
PROCEDURE DIVISION RETURNING RESULT.
END METHOD ToString.

パラメタ

なし

戻り値

このExceptionクラスを表す文字列。

例外

なし

UByteArrayHolder

UByteArrayHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.UByteArrayHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

UByteArrayHolderクラスは，System.Byte配列を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public byte[] Value {get; set;}

【Visual Basicの場合】

Public Property Value As Byte()

【J#の場合】

public ubyte[] get_Value();
public void set_Value(ubyte[]);

【COBOL言語の場合】

REPOSITORY.
     CLASS BYTE-ARRAY      AS 'System.Byte' IS ARRAY.

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE BYTE-ARRAY.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE OBJECT REFERENCE BYTE-ARRAY.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

UByteHolder

UByteHolderの概要

名前空間

Hitachi.OpenTP1

継承関係

System.Object
 +- Hitachi.OpenTP1.UByteHolder

実装インタフェース

Hitachi.OpenTP1.Common.IHolder

説明

UByteHolderクラスは，System.Byte値を保持するホルダークラスです。

プロパティの一覧

名称 | 説明
Value | 保持している変数に対して値の設定および参照を行います。

プロパティの詳細

●Value

説明

保持している変数に対して値の設定および参照を行います。

宣言

【C#の場合】

public byte Value {get; set;}

【Visual Basicの場合】

Public Property Value As Byte

【J#の場合】

public ubyte get_Value();
public void set_Value(ubyte);

【COBOL言語の場合】

IDENTIFICATION DIVISION.
METHOD-ID. GET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-CHAR UNSIGNED.
PROCEDURE DIVISION RETURNING VAL.
END METHOD.

IDENTIFICATION DIVISION.
METHOD-ID. SET PROPERTY Value IS PUBLIC.
DATA DIVISION.
LINKAGE SECTION.
01 VAL  USAGE BINARY-CHAR UNSIGNED.
PROCEDURE DIVISION USING BY VALUE VAL.
END METHOD.

例外

なし

7.　障害運用

この章では，Client .NETで障害が発生した場合の対処方法を説明します。

＜この章の構成＞

7.1　障害の種類と対処方法

7.2　障害時に取得する情報

7.1　障害の種類と対処方法

Client .NETで発生するおそれがある障害の種類とユーザが取る処置を次の表に示します。

表7-1　障害の種類とユーザの取る処置

障害の種類
障害の内容
Client .NETの処理
ユーザが取る処置

通信障害

サーバ障害

ネットワーク障害

など

障害発生時の情報をトレースファイルに出力します。

例外をCUP.NETに通知します。

障害原因を調査して取り除くか，または障害回復を待ち，再度クライアント処理を実行してください。
必要に応じて構成定義の内容，またはTP1/Server側の定義の内容を見直してください。

サーバアプリケーション障害※1
SPP.NETでの例外発生（ユーザ例外）
TP1UserExceptionをCUP.NETに通知します。
SPP.NETの処理，入力データなどを見直してください。

SPP.NETでの例外発生（ユーザ例外以外）
TP1RemoteExceptionをCUP.NETに通知します。
SPP.NETの処理，実行環境などを見直してください。

データ変換障害
クライアントスタブでのデータ変換エラー
TP1MarshalExceptionをCUP.NETに通知します。
使用している.NETインタフェース定義の内容を見直してください。または，サービス定義およびデータ型定義の内容を見直してください。

クライアント環境障害

ファイル障害

メモリ不足

など

障害発生時の情報をトレースファイルに出力します。※2

例外をCUP.NETに通知します。

障害の要因を取り除いてください。

メッセージ受信障害
不正データ（4バイト以下のメッセージ）の受信

障害発生時の情報をトレースファイルに出力します。

コネクションを解放します。

ErrInvalidMessageExceptionをCUP.NETに通知します。

相手システムを見直してください。

受信メッセージ格納領域の超過

障害発生時の情報をトレースファイルに出力します。

コネクションを解放します。

ErrBufferOverflowExceptionをCUP.NETに通知します。

なお，受信メッセージ格納領域にメッセージは格納されません。
ReceiveAssembledMessageメソッドに指定した受信メッセージ格納領域のサイズ，または相手システムを見直してください。

最大待ち時間の超過

コネクションを解放します。

ErrTimedOutExceptionをCUP.NETに通知します。

なお，受信メッセージ格納領域には，最大待ち時間を超過するまでに受信したメッセージが格納されます。
ReceiveAssembledMessageメソッドに指定した最大待ち時間，または相手システムを見直してください。

注※1

サーバアプリケーションが.NETインタフェース定義を使用したSPP.NETの場合にだけ発生します。それ以外の場合は通信障害として通知されます。

注※2

トレースファイルへの出力で障害が発生した場合は，トレースファイルへの出力のエラーを無視して処理を続行します。以降，トレースは出力されません。

7.2　障害時に取得する情報

障害が発生した場合は，次に示す情報を取得してください。また，必要に応じて，取得した情報をシステム管理者に提供してください。

＜この節の構成＞

(1)　例外が発生した場合

(2)　コマンドがエラーとなった場合

(3)　トレースを取得している場合

(1)　例外が発生した場合

例外の情報をToStringメソッドで取得して，ファイルに出力するか画面に表示してください。トレースもあわせて取得してください。

(2)　コマンドがエラーとなった場合

コマンドが出力したエラーメッセージ，コマンドの入力形式，入力ファイルなどを保存してください。

(3)　トレースを取得している場合

取得しているすべてのトレースファイルを保存してください。デバッグトレースが出力されている場合は保存してください。

付録

＜この付録の構成＞

付録A　DCCM3との接続

付録B　Client .NETで利用できるクラスのフィールド

付録C　バージョンアップ時の変更点

付録D　用語解説

付録A　DCCM3との接続

Client .NETでは，RPCやTCP/IP通信機能を使用して，VOS3やVOS1上のDCCM3と接続できます。

＜この節の構成＞

付録A.1　DCCM3とのRPC

付録A.2　DCCM3とのTCP/IP通信

付録A.1　DCCM3とのRPC

Client .NETでは，OpenTP1のサーバだけでなく，DCCM3のサーバともRPCを使用した通信ができます。相手サーバがDCCM3の場合の特徴は次のとおりです。

使用できるRPCの形態は，同期応答型RPCと非応答型RPCです。連鎖RPCは使用できません。

トランザクション制御機能は使用できません。

常設コネクションを使用してDCCM3論理端末へRPCを行う場合，負荷分散機能を使用できます。詳細については，「付録A.1(4)　DCCM3論理端末に対してRPCを行う場合の負荷分散」を参照してください。

DCCM3に対してRPCを行う場合，サービス名がトランザクション名称と評価されます。

DCCM3のサーバ側に，OpenTP1のRPC要求を解釈する機能が組み込まれていることが前提になります。この機能は，DCCM3/SERVER/TP1が提供します。

＜この項の構成＞

(1)　相手サーバの指定方法

(2)　相手サーバのアドレス定義

(3)　RPCの実行手順

(4)　DCCM3論理端末に対してRPCを行う場合の負荷分散

(5)　Client .NET構成定義の定義例

(6)　DCCM3論理端末に対してRPCを行う場合の注意事項

(1)　相手サーバの指定方法

DCCM3のサーバとRPCを使用した通信をする場合，相手サーバはサービスグループ名とサービス名で指定します。この指定方法はOpenTP1のサーバに対するRPCと同じです。

サービスグループ名
サービスグループ名として不正でないダミーの文字列を指定します。
1～31文字の識別子を指定してください。

サービス名
DCCM3側のトランザクション名称を指定します。
使用できる文字は，アルファベット（A～Z，a～z）と数字（0～9）です。文字数の合計が1～8文字になるように指定してください。

(2)　相手サーバのアドレス定義

DCCM3のサーバとRPCを使用した通信をする場合，OpenTP1のネームサービスの管理外にあるサーバを呼び出すため，Client .NET側でサービス名ごとに定義を分けて，サーバのアドレスを定義する必要があります。

サーバのアドレスの定義方法を次に示します。

Client .NET構成定義の<tp1Server>要素のhost属性およびport属性に，それぞれRPC受け付け窓口のホスト名およびポート番号を指定します。

(3)　RPCの実行手順

相手サーバのアドレスを定義したあとRPCを実行します。Client .NET構成定義の指定内容によってRPCの実行手順は異なります。

(a)　<rapService>要素のautoConnect属性にtrueを指定した場合

OpenRpcメソッドを実行して，定義を読み込みます。

Callメソッドを実行します。
Client .NET構成定義の<tp1Server>要素で指定したRPC受け付け窓口に，自動でコネクションを確立します。コネクションの確立後，RPCを行います。

(b)　<rapService>要素のautoConnect属性にfalseを指定，または指定を省略した場合

OpenRpcメソッドを実行して，定義を読み込みます。

引数なしのOpenConnectionメソッドを実行します。
Client .NET構成定義の<tp1Server>要素で指定したRPC受け付け窓口に，コネクションを確立します。

コネクションの確立後，Callメソッドを実行してRPCを行います。

(c)　<tp1Server>要素で指定したサーバ以外と通信する場合

OpenRpcメソッドを実行して，定義を読み込みます。
この手順は省略できます。省略した場合でも，2.および3.は実行できます。

OpenConnectionメソッドの引数にRPC受け付け窓口（ホスト名，ポート番号）を指定して，OpenConnectionメソッド実行します。

コネクションの確立後，Callメソッドを実行してRPCを行います。

(4)　DCCM3論理端末に対してRPCを行う場合の負荷分散

Client .NETとDCCM3論理端末が常設コネクションを使用してRPCを行う場合，コネクション確立時に接続先を複数のDCCM3に振り分けて負荷を分散できます。Client .NETは，Client .NET構成定義の<tp1Server>要素に指定された複数のDCCM3論理端末のホスト名およびポート番号の中から，接続先をランダムに選択し，接続を試みます。あるDCCM3論理端末との接続に失敗すると，それ以外のDCCM3論理端末から再びランダムに選択し，接続を試みます。これを繰り返し，Client .NET構成定義の<tp1Server>要素に指定されたすべてのDCCM3論理端末との接続にすべて失敗したときに，初めてエラーを検知します。

Client .NETとDCCM3論理端末との通信方法を次に示します。

Client .NET構成定義の<tp1Server>要素にDCCM3論理端末のホスト名およびポート番号を指定し，引数なしのOpenConnectionメソッドを実行します。
この場合，常設コネクションを使用します。

Client .NET構成定義の<tp1Server>要素にDCCM3論理端末のホスト名およびポート番号，<rapService>要素のrandomSelect属性にtrueを指定します。

Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定した場合，Callメソッドを実行します。Callメソッドを実行すると，コネクション未確立時には，自動でコネクションを確立します。
Client .NET構成定義の<rapService>要素のautoConnect属性にfalseを指定，または指定を省略した場合，引数なしのOpenConnectionメソッドを実行します。引数なしのOpenConnectionメソッドを実行すると，コネクションを確立します。

(5)　Client .NET構成定義の定義例

次の図で動くような，DCCM3接続時のClient .NET構成定義の定義例を示します。

図A-1　DCCM3のサーバとのRPC

Client .NET構成定義で，各トランザクションを処理するサーバのアドレス（RPC受け付け窓口）を，プロファイルIDを分けて<tp1Server>要素に定義します。

RPCを行うとき，プロファイルIDからRPC受け付け窓口のアドレスを求め，RPCのメッセージを送信します。

RPCのメッセージを解釈し，要求されたサービスを実行します。

同期応答型RPCの場合，サーバからの応答メッセージを受信します。

定義例

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <configSections>
   <section
     name="hitachi.opentp1.client"
     type="Hitachi.OpenTP1.Common.Util.ProfileSectionHandler,
           Hitachi.OpenTP1.Client,Version=7.0.0.0,
           Culture=neutral,PublicKeyToken=2440cf5f0d80c91c,Custom=null" />
 </configSections>

 <hitachi.opentp1.client>
   <common>
     <rpc use="rap" watchTime="180" />
     <rapService autoConnect="true" randomSelect="true" />
   </common>
   <profile id="tran1">
     <!--"TRAN1"のトランザクションを処理できるサーバのアドレスを定義-->
     <tp1Server host="xxx.xxx.xxx.xxx" port="10020" />
     <tp1Server host="zzz.zzz.zzz.zzz" port="10022" />
   </profile>
   <profile id="tran2">
     <!--"TRAN2"のトランザクションを処理できるサーバのアドレスを定義-->
     <tp1Server host="yyy.yyy.yyy.yyy" port="10021" />
     <tp1Server host="zzz.zzz.zzz.zzz" port="10022" />
   </profile>
 </hitachi.opentp1.client>
</configuration>

上記のClient .NET構成定義を使用したプログラム例を次に示します。

プログラム例

using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Client;

public class DCCM3Caller
{
 ...
 public void Function1(){
   TP1Client clt = new TP1Client();

   // TRAN1のトランザクションを呼び出すRPC
   clt.OpenRpc("tran1");
   ...
   // 同期応答型RPC
   clt.Call("dummysvg", "TRAN1", ..., TP1ClientFlags.DCNOFLAGS);
   ...
   clt.CloseRpc();

   // TRAN2のトランザクションを呼び出すRPC
   // 要求先のサーバアドレス取得のために定義を読み直す
   clt.OpenRpc("tran2");
   ...
   // 非応答型RPC
   clt.Call("dummysvg", "TRAN2", ..., TP1ClientFlags.DCRPC_NOREPLY);
   ...
   clt.CloseRpc();
 }
}

(6)　DCCM3論理端末に対してRPCを行う場合の注意事項

リモートAPI機能を使用したRPCだけ使用できます。

連鎖RPCは使用できません。

.NETインタフェース定義を使用したRPCは使用できません。

データ圧縮機能を使用したRPCは使用できません。

サービス定義を使用したRPCは，次の条件をすべて満たしている場合だけ使用できます。

データ型定義によってデータの形式をメッセージの単位に定義できる。

文字列を含まないデータ，または.NET Frameworkがサポートしているエンコード方式でエンコードおよびデコードできる文字列のデータを送受信する。
なお，.NET Frameworkがサポートしているエンコード方式については，.NET Frameworkのドキュメントを参照してください。

トランザクション制御機能は使用できません。

文字列のデータを含むメッセージを送受信する場合，あらかじめメッセージ中の文字コードを通信先システムと決めた上で，必要に応じてUAPで文字コード変換を行ってください。.NET Framework上では，Unicode（リトルエンディアン）が文字列データのメモリ上の内部表現として使用されます。ただし，COBOL2002 for .NET Frameworkを使用する場合の，文字列データのメモリ上の内部表現については，マニュアル「COBOL2002 for .NET Framework ユーザーズガイド」を参照してください。

Client .NET構成定義で，<rapService>要素のinquireTime属性を指定しても無効になります。CUP.NETからサーバに対する問い合わせの間隔最大時間は，DCCM3の「端末放置監視時間」で指定してください。

DCCM3側の注意事項については，マニュアル「VOS3 データマネジメントシステム XDM E2系 解説」および「VOS1 データコミュニケーションマネジメントシステム DCCM3 解説」を参照してください。

付録A.2　DCCM3とのTCP/IP通信

DCCM3論理端末とTCP/IP通信を行う場合の注意事項は次のとおりです。

文字列のデータを含むメッセージを送受信する場合，あらかじめメッセージ中の文字コードを通信先システムと決めた上で，必要に応じてUAPで文字コード変換を行ってください。.NET Framework上では，Unicode（リトルエンディアン）が文字列データのメモリ上の内部表現として使用されます。

ただし，COBOL2002 for .NET Frameworkを使用する場合の，文字列データのメモリ上の内部表現については，マニュアル「COBOL2002 for .NET Framework ユーザーズガイド」を参照してください。

付録B　Client .NETで利用できるクラスのフィールド

Client .NETで利用できる各クラスのフィールドを次の表に示します。COBOL言語から定数値のフィールドを使用する場合は対応する値を指定してください。

表B-1　Client .NETで利用できるクラスのフィールド

クラス名 | フィールド名 | 値
Hitachi.OpenTP1.TP1Error | DCADMER_COMM | -1851
DCADMER_PARAM | -1852
DCADMER_STS_IO | -1853
DCADMER_PROTO | -1854
DCADMER_STATNOTZERO | -1855
DCADMER_MEMORY_OUT | -1856
DCADMER_MEMORY_ERR | -1857
DCADMER_MEMORY_OUTERR | -1858
DCADMER_SYSTEMCALL | -1859
DCADMER_SUBAREA_NOT_EXIST | -1860
DCADMER_MEMORY | -1861
DCADMER_DEF | -1862
DCADMER_MULTI_DEF | -1864
DCADMER_NO_MORE_ENTRY | -1865
DCADMER_REMOTE | -1866
DCADMER_NODE_NOT_EXIST | -1867
DCADMER_SWAP | -1868
DCJNLER_PARAM | -1101
DCJNLER_SHORT | -1102
DCJNLER_LONG | -1103
DCJNLER_MODE | -1104
DCJNLER_PROTO | -1105
DCLCKER_PARAM | -401
DCLCKER_WAIT | -450
DCLCKER_DLOCK | -452
DCLCKER_TIMOUT | -453
DCLCKER_MEMORY | -454
DCLCKER_OUTOFTRN | -455
DCLCKER_NOTHING | -456
DCLCKER_VERSION | -457
DCLOGER_PARAM_ARGS | -1900
DCLOGER_COMM | -1901
DCLOGER_MEMORY | -1902
DCLOGER_DEFFILE | -1904
DCLOGER_NOT_UP | -1905
DCLOGER_HEADER | -1906
DCLOGER_TIMEOUT | -1907
DCLOGER_PROTO | -1999
DCMCFER_INVALID_ARGS | -11900
DCMCFER_PROTO | -11901
DCMCFRTN_71002 | -12002
DCMCFRTN_71003 | -12003
DCMCFRTN_71004 | -12004
DCMCFRTN_71108 | -12108
DCMCFRTN_72000 | -13000
DCMCFRTN_72001 | -13001
DCMCFRTN_72012 | -13012
DCMCFRTN_72013 | -13013
DCMCFRTN_72016 | -13016
DCMCFRTN_72017 | -13017
DCMCFRTN_72026 | -13026
DCMCFRTN_72036 | -13036
DCMCFRTN_72041 | -13041
DCMCFRTN_72073 | -13073
DCMCFRTN_73001 | -14001
DCMCFRTN_73002 | -14002
DCMCFRTN_73003 | -14003
DCMCFRTN_73005 | -14005
DCMCFRTN_73010 | -14010
DCMCFRTN_73015 | -14015
DCMCFRTN_73018 | -14018
DCMCFRTN_73019 | -14019
DCMCFRTN_73020 | -14020
DCNJSER_XALIB_LOAD | -7519
DCNJSER_XALIB_INVALID | -7520
DCNJSER_SYSTEM | -7549
DCNJS2ER_INVALID_DATA | -7551
DCNJS2ER_INTERNAL | -7552
DCNJS2ER_INVALID_ARGS | -7553
DCNJS2ER_XML_ANALYSIS_ERR | -7554
DCPRFER_PARAM | -4601
DCRAPER_PARAM | -5501
DCRAPER_PROTO | -5502
DCRAPER_NOMEMORY | -5503
DCRAPER_NETDOWN | -5505
DCRAPER_TIMEDOUT | -5506
DCRAPER_NOSOCKET | -5507
DCRAPER_NOHOSTNAME | -5508
DCRAPER_MAX_CONNECTION | -5517
DCRAPER_NOMEMORY_SV | -5520
DCRAPER_SHUTDOWN | -5521
DCRAPER_NOCONTINUE | -5522
DCRAPER_SYSCALL | -5523
DCRAPER_NOSERVICE | -5528
DCRAPER_ALREADY_CONNECT | -5529
DCRAPER_UNKNOWN_NODE | -5531
DCRAPER_TIMEOUT_SV | -5532
DCRAPER_PANIC_SV | -5533
DCRAPER_MAX_CONNECTION_SV | -5534
DCRPCER_INVALID_ARGS | -301
DCRPCER_PROTO | -302
DCRPCER_FATAL | -303
DCRPCER_NO_BUFS | -304
DCRPCER_NET_DOWN | -306
DCRPCER_TIMED_OUT | -307
DCRPCER_MESSAGE_TOO_BIG | -308
DCRPCER_REPLY_TOO_BIG | -309
DCRPCER_NO_SUCH_SERVICE_GROUP | -310
DCRPCER_NO_SUCH_SERVICE | -311
DCRPCER_SERVICE_CLOSED | -312
DCRPCER_SERVICE_TERMINATING | -313
DCRPCER_SERVICE_NOT_UP | -314
DCRPCER_OLTF_NOT_UP | -315
DCRPCER_SYSERR_AT_SERVER | -316
DCRPCER_NO_BUFS_AT_SERVER | -317
DCRPCER_SYSERR | -318
DCRPCER_INVALID_REPLY | -319
DCRPCER_OLTF_INITIALIZING | -320
DCRPCER_ALL_RECEIVED | -321
DCRPCER_INVALID_DES | -322
DCRPCER_NO_BUFS_RB | -323
DCRPCER_SYSERR_RB | -324
DCRPCER_SYSERR_AT_SERVER_RB | -325
DCRPCER_REPLY_TOO_BIG_RB | -326
DCRPCER_TRNCHK | -327
DCRPCER_NO_SUCH_DOMAIN | -328
DCRPCER_NO_PORT | -329
DCRPCER_SERVER_BUSY | -356
DCRPCER_TESTMODE | -366
DCRPCER_NOT_TRN_EXTEND | -367
DCRPCER_STANDBY_END | -369
DCRPCER_SECCHK | -370
DCRPCER_SEC_INIT | -371
DCRPCER_TRNCHK_EXTEND | -372
DCRPCER_RETRY_COUNT_OVER | -377
DCRPCER_SERVICE_TERMINATED | -378
DCTAMER_PARAM_TID | -1700
DCTAMER_PARAM_TBL | -1701
DCTAMER_PARAM_KEY | -1702
DCTAMER_PARAM_KNO | -1703
DCTAMER_PARAM_BFA | -1704
DCTAMER_PARAM_BFS | -1705
DCTAMER_PARAM_DTA | -1706
DCTAMER_PARAM_DTS | -1707
DCTAMER_PARAM_FLG | -1708
DCTAMER_NOTTAM | -1709
DCTAMER_UNDEF | -1710
DCTAMER_TAMEND | -1720
DCTAMER_PROTO | -1721
DCTAMER_TRNOPN | -1722
DCTAMER_RMTBL | -1723
DCTAMER_NOLOAD | -1724
DCTAMER_OPENED | -1725
DCTAMER_NOOPEN | -1726
DCTAMER_LOGHLD | -1727
DCTAMER_OBSHLD | -1728
DCTAMER_IDXTYP | -1729
DCTAMER_ACSATL | -1730
DCTAMER_NOREC | -1731
DCTAMER_SEQENCE | -1732
DCTAMER_EXWRITE | -1733
DCTAMER_EXREWRT | -1734
DCTAMER_EXKEY | -1735
DCTAMER_LOCK | -1736
DCTAMER_DLOCK | -1737
DCTAMER_TBLVR | -1760
DCTAMER_FLSVR | -1761
DCTAMER_TAMVR | -1762
DCTAMER_NOAREA | -1763
DCTAMER_RECOBS | -1764
DCTAMER_TRNNUM | -1765
DCTAMER_OPENNUM | -1766
DCTAMER_ACCESSS | -1767
DCTAMER_ACCESSF | -1768
DCTAMER_MEMORY | -1769
DCTAMER_IO | -1770
DCTAMER_TMERR | -1771
DCTAMER_NO_ACL | -1772
DCTAMER_ACCESS | -1773
DCTRNER_ROLLBACK | -902
DCTRNER_HEURISTIC | -903
DCTRNER_HAZARD | -904
DCTRNER_PROTO | -905
DCTRNER_RM | -906
DCTRNER_TM | -907
DCTRNER_NO_BEGIN | -924
DCTRNER_ROLLBACK_NO_BEGIN | -925
DCTRNER_HEURISTIC_NO_BEGIN | -926
DCTRNER_HAZARD_NO_BEGIN | -927
Hitachi.OpenTP1.Client.TP1Client | DCRPC_MAX_MESSAGE_SIZE | 1048576
Hitachi.OpenTP1.Client.TP1ClientFlags | DCNOFLAGS | 0
DCRPC_NOREPLY | 1
DCRPC_CHAINED | 4
DCRPC_TPNOTRAN | 32
DCRPC_SCD_LOAD_PRIORITY | 8
DCRPC_WATCHTIMINHERIT | 16
DCRPC_RAP_AUTOCONNECT | 32
DCRPC_WATCHTIMRPCINHERIT | 64
DCCLT_SND_CLOSE | 1
DCCLT_RCV_CLOSE | 2
Hitachi.OpenTP1.Client.TP1ClientError | DCCLNER_INVALID_ARGS | -7601
DCCLNER_INVALID_HOST | -7602
DCCLNER_INVALID_PORT | -7603
DCCLNER_IO | -7604
DCCLNER_TIMEOUT | -7605
DCCLNER_REPLY_TOO_BIG | -7606
DCCLNER_CONNFREE | -7608
DCCLNER_PROTO | -7609
DCCLNER_EOF | -7612
DCCLNER_FATAL | -7613
DCCLNER_NOBUFS | -7614
DCCLNER_NOT_UP | -7616
DCCLNER_PARAM | -7617
DCCLNER_SYS | -7618
DCCLNER_NETDOWN | -7620
DCCLNTRNER_RM | -7622
DCCLNTRNER_TM | -7623
DCCLNTRNER_ROLLBACK | -7624
DCCLNTRNER_HEURISTIC | -7625
DCCLNTRNER_HAZARD | -7626
DCCLNTRNER_NO_BEGIN | -7627
DCCLNTRNER_ROLLBACK_NO_BEGIN | -7628
DCCLNTRNER_HEURISTIC_NO_BEGIN | -7629
DCCLNTRNER_HAZARD_NO_BEGIN | -7630
DCCLNER_TIMEOUT_S | -7631
DCCLNER_TIMEOUT_C | -7632
DCCLNER_NETDOWN_S | -7633
DCCLNER_NETDOWN_C | -7634
DCCLNER_CONNREFUSED | -7635
DCCLNER_MESSAGE_TOO_BIG | -7637
DCCLNER_INVALID_MSG | -7638
DCCLNER_BUFFER_OVERFLOW | -7639
DCCLNER_COLLISION_MSG | -7640
DCCLNER_ACCEPT_CANCELED | -7642
DCCLNER_VERSION | -7643
DCCLNER_MARSHAL | -7650
DCCLNER_UNEXPECT | -7699

付録C　バージョンアップ時の変更点

各バージョンでの変更点を次に示す分類ごとに示します。

API，定義およびコマンドの追加と削除

動作の変更

API，定義およびコマンドのデフォルト値の変更

＜この節の構成＞

付録C.1　07-03での変更点

付録C.2　07-02での変更点

付録C.3　07-01での変更点

付録C.4　07-00での変更点

付録C.1　07-03での変更点

Client .NET 07-03でのAPI，定義およびコマンドの追加と削除を次の表に示します。

表C-1　Client .NET 07-03でのAPI，定義およびコマンドの追加と削除

種別
分類
内容

追加
API
TP1Clientクラス

AcceptNotificationメソッド

AcceptNotificationChainedメソッド

CancelNotificationメソッド

CloseNotificationメソッド

OpenNotificationメソッド

ErrAcceptCanceledExceptionクラス

ErrVersionExceptionクラス

定義
Client .NET構成定義

<rpc>要素のcupRecvPort属性

<rpc>要素のuseMultiScheduler属性

<scheduleService>要素のmultiSchedulerCount属性

<socket>要素のcupSendHost属性

<transaction>要素のcompletionLimitTime属性

コマンド
なし

削除
なし

Client .NET 07-03での動作の変更点を次の表に示します。

表C-2　Client .NET 07-03での動作の変更点

分類 | 内容
API | SetUapTraceModeメソッド，SetErrorTraceModeメソッド，SetMethodTraceModeメソッド，SetDataTraceModeメソッドで，UAPトレースを取得するように変更
定義 | なし
コマンド | なし
メッセージ | なし
その他 | リモートAPI機能を使用したRPCで，TP1/Serverの性能検証用トレースにClient .NETのインスタンスごとに一意である識別情報を出力するように変更
開発言語としてCOBOL言語に対応
適用OSにWindows Server 2008を追加

Client .NET 07-03でのAPI，定義およびコマンドのデフォルト値の変更はありません。

付録C.2　07-02での変更点

Client .NET 07-02でのAPI，定義およびコマンドの追加と削除を次の表に示します。

表C-3　Client .NET 07-02でのAPI，定義およびコマンドの追加と削除

種別
分類
内容

追加
API
なし

定義
Client .NET構成定義

<xarTransaction>要素

コマンド
なし

削除
なし

Client .NET 07-02でのAPI，定義およびコマンドの動作，ならびにデフォルト値の変更はありません。

付録C.3　07-01での変更点

Client .NET 07-01でのAPI，定義およびコマンドの追加と削除を次の表に示します。

表C-4　Client .NET 07-01でのAPI，定義およびコマンドの追加と削除

種別
分類
内容

追加
API
TP1Clientクラス

SetConnectInformationメソッド

定義
Client .NET構成定義

<rapService>要素のconnectInformation属性

<socket>要素

コマンド
なし

削除
なし

Client .NET 07-01でのAPI，定義およびコマンドの動作の変更点を次の表に示します。

表C-5　Client .NET 07-01でのAPI，定義およびコマンドの動作の変更点

分類 | 内容
API | なし
定義 | なし
コマンド | なし
メッセージ | なし
その他 | Client .NETからTP1/Serverへの接続時，自システムの自動割当てポートの不足によるエラー（System.Net.Sockets.SocketException例外）が発生した場合にリトライ処理を行うように変更
SPPから応答メッセージ受信処理中に一時クローズ要求メッセージを受信した場合，その一時クローズ要求メッセージを破棄して本来の応答メッセージを受信し，かつ受信待ちを不当に行い，ErrClientTimedOutException例外が発生する問題を修正
適用OSにWindows Vistaを追加

Client .NET 07-01でのAPI，定義およびコマンドの動作，ならびにデフォルト値の変更はありません。

付録C.4　07-00での変更点

Client .NET 07-00でのAPI，定義およびコマンドの追加と削除を次の表に示します。

表C-6　Client .NET 07-00でのAPI，定義およびコマンドの追加と削除

種別
分類
内容

追加
API
なし

定義
Client .NET構成定義

<nameService>要素のmultiHomedHost属性

コマンド
なし

削除
なし

Client .NET 07-00でのAPI，定義およびコマンドの動作の変更点を次の表に示します。

表C-7　Client .NET 07-00でのAPI，定義およびコマンドの動作の変更点

分類 | 内容
API | なし
定義 | なし
コマンド | なし
メッセージ | なし
その他 | .NET Framework 2.0をサポート
RPC送受信メッセージの最大長拡張機能を追加

Client .NET 07-00でのAPI，定義およびコマンドの動作，ならびにデフォルト値の変更はありません。

付録D　用語解説

記号｜英字｜ア行｜カ行｜サ行｜タ行｜ナ行｜ハ行

Client .NETに関する用語について説明します。その他の用語については，必要に応じて次のマニュアルおよびドキュメントを参照してください。

「OpenTP1 解説」

「TP1/LiNK 使用の手引」

.NET Frameworkのドキュメント

記号

.NETインタフェース定義

SPP.NETのRPCインタフェース情報を.NET Frameworkに対応したプログラム言語で定義したものです。

英字

ADO.NET

.NET Frameworkが提供するデータアクセスの技術セットです。

ASP.NET

.NET Frameworkが提供するWebアプリケーションやXML Webサービスを構築するための技術セットです。

CLR（Common Language Runtime）

→共通言語ランタイムの説明を参照してください。

CLS（Common Language Specification）

→共通言語仕様の説明を参照してください。

CTS（Common Type System）

→共通型システムの説明を参照してください。

CUP.NET（Client User Program for .NET Framework）

Client .NETを利用して，SPP.NETやSPPにサービスを要求するクライアントアプリケーションのことです。

さまざまなアプリケーション形態が可能であり，アプリケーション形態に応じたランタイムホストで実行されます。

GAC（Global Assembly Cache）

→グローバルアセンブリキャッシュの説明を参照してください。

SPP.NET（Service Providing Program for .NET Framework）

OpenTP1 for .NET FrameworkのUAPのうち，ファイルへのアクセスなどサーバの役割をするプログラムのことです。SPP.NETは，クライアントUAPから要求されたサービスを実行するサービスメソッドから構成されます。

OpenTP1 for .NET Frameworkが提供するランタイムホストで実行されます。

SUP.NET（Service Using Program for .NET Framework）

OpenTP1 for .NET FrameworkのUAPのうち，SPP.NETまたはSPPに処理要求をするだけの，クライアントアプリケーションのことです。ほかのUAPにサービスを提供するためのメソッドは持ちません。

XML Webサービス

XML，HTTP，SOAPなどのインターネット標準技術を利用して，ネットワーク上に分散した異なるプラットフォーム上のアプリケーションを連携させる技術，または連携したアプリケーション（サービス）のことです。

ア行

アセンブリ

.NET Frameworkのアプリケーションの配置やバージョン管理などを行う場合の基本単位です。アセンブリは，リソースやファイルの論理的な集合として，一つの機能を構成します。

アプリケーションドメイン

共通言語ランタイムがアプリケーション間を分離するために使用する処理単位です。

同じアプリケーションの有効範囲内（アプリケーションスコープ）で作成されたオブジェクトの集合の境界を示します。

アプリケーションベースディレクトリ

アプリケーションドメインに読み込まれるDLLファイルまたはEXEファイルを格納するディレクトリのことです。

インデクスドレコード

Connector .NETでバイナリデータを使用した，RPCを発行する場合およびTCP/IP通信をする場合に使用するインタフェースのことです。

カ行

カスタムレコードクラス

データ型定義で定義したデータ型を.NET Frameworkのデータ型に対応づけて生成したデータ変換クラスのことです。

完全限定名

名前空間の名前から指定するオブジェクトの参照方法です。完全限定名を使用すると，使用するオブジェクトを特定できるため，名前の競合が発生しません。

共通型システム（CTS）

共通言語ランタイムでの型の宣言，使用，および管理方法を定義したものです。

共通言語仕様（CLS）

共通言語ランタイムによってサポートされる言語機能のサブセットです。

共通言語ランタイム（CLR）

.NET Frameworkに対応するプログラムが使用する共通の動作環境（ランタイム）です。

クライアントスタブ

→スタブの説明を参照してください。

グローバルアセンブリキャッシュ（GAC）

複数のアプリケーションで共有するアセンブリを格納するコードキャッシュのことです。

コネクション

Connector .NETは，Client .NETが提供するTP1Clientクラスのインスタンスにハンドルを関連づけて管理します。TP1Clientクラスのインスタンスに関連づけられたハンドルのことを，コネクションと呼びます。

コネクションプーリング機能

一度生成されたコネクションをプーリングする機能のことです。コネクションプーリング機能を使用すると，コネクションプール内のコネクションを再利用できるため，資源を効率的に使用できます。

コネクションプール

コネクションプーリング機能使用時に，生成されたコネクションをプーリングするための領域のことです。

サ行

サーバスタブ

→スタブの説明を参照してください。

サービス定義

SPP.NETやSPPのサービス名と入出力データの定義を対応づけて定義したものです。

サービス定義ファイルとデータ型定義ファイルから構成されます。

スタブ

.NETインタフェース定義を使用するRPCや，サービス定義を使用するRPCの場合に，RPCで使用する入出力データの文字コード変換やエンディアンの識別などを自動的に行うプログラムのことです。

サーバで使用するスタブをサーバスタブ，クライアントで使用するスタブをクライアントスタブと呼びます。

スタブは運用コマンドで生成します。.NETインタフェース定義を使用するRPCの場合は，クライアントスタブとサーバスタブが生成されます。サービス定義を使用するRPCの場合は，クライアントスタブが生成されます。

タ行

データ型定義

RPCメッセージのユーザデータの形式をC言語の構造体のような形式で定義したものです。

ナ行

名前空間

名前を一意に識別するための概念です。名前空間と名前を組み合わせることによって，オブジェクトなどを特定できます。

また，名前空間によってクラスなどを論理的にグループ化できます。

ハ行

バッファプーリング機能

RPC要求に使用するメッセージを格納するバッファ（バイト配列）をプーリングする機能です。

バッファプーリング機能でバッファをプーリングすると，バッファの生成や破棄が少なくなり性能が向上します。

バッファプール

バッファプーリング機能使用時に，生成されたバッファを同じバッファサイズのバッファごとに管理するプールのことです。

索引

[記号]
[Ａ][Ｂ][Ｃ][Ｄ][Ｅ][Ｆ][Ｇ][Ｈ][Ｉ][Ｌ][Ｍ][Ｎ][Ｏ][Ｐ][Ｒ][Ｓ][Ｔ][Ｕ][Ｖ][Ｗ][Ｘ]
[ア行][カ行][サ行][タ行][ナ行][ハ行][マ行][ラ行]

(記号)

.NETインタフェース定義

.NETインタフェース定義〔用語解説〕

.NETインタフェース定義の定義方法

.NETインタフェース定義を使用したRPC

.NETインタフェース定義を使用したSPP.NETの呼び出し方法

(英字)

(Ａ)

AcceptNotification〔TP1Client〕

AcceptNotificationChained〔TP1Client〕

ADO.NET〔用語解説〕

ASP.NET〔用語解説〕

autoConnect〔rapService〕

(Ｂ)

Begin〔TP1Client〕

(Ｃ)

cacheCapacity〔nameService〕

cacheTime〔nameService〕

Call〔TP1Client〕

CallTo〔TP1Client〕

CancelNotification〔TP1Client〕

Client .NETで利用できるクラスのフィールド

CloseConnection〔TP1Client〕

CloseNotification〔TP1Client〕

CloseRpc〔TP1Client〕

CLR〔用語解説〕

CLS〔用語解説〕

Commit〔TP1Client〕

CommitChained〔TP1Client〕

completionLimitTime〔transaction〕

compressData〔rpc〕

connectInformation〔rapService〕

connectTimeout〔socket〕

cpuTime〔transaction〕

CreateScdDirectObject〔TP1Client〕

CTS〔用語解説〕

CUP.NET

CUP.NET〔用語解説〕

CUP.NETの実行環境

CUP.NETのポート番号〔rpc〕

CUP.NETのポート番号〔tcpip〕

CUPBIN〔C#，J#，およびVisual Basicの場合〕

CUPBIN〔COBOL言語の場合〕

CUPCR〔C#，J#，およびVisual Basicの場合〕

CUPIF〔C#，J#，およびVisual Basicの場合〕

cupRecvPort〔rpc〕

cupSendHost〔socket〕

(Ｄ)

dataTrace

DCADMER_COMM〔TP1Error〕

DCADMER_DEF〔TP1Error〕

DCADMER_MEMORY〔TP1Error〕

DCADMER_MEMORY_ERR〔TP1Error〕

DCADMER_MEMORY_OUT〔TP1Error〕

DCADMER_MEMORY_OUTERR〔TP1Error〕

DCADMER_MULTI_DEF〔TP1Error〕

DCADMER_NO_MORE_ENTRY〔TP1Error〕

DCADMER_NODE_NOT_EXIST〔TP1Error〕

DCADMER_PARAM〔TP1Error〕

DCADMER_PROTO〔TP1Error〕

DCADMER_REMOTE〔TP1Error〕

DCADMER_STATNOTZERO〔TP1Error〕

DCADMER_STS_IO〔TP1Error〕

DCADMER_SUBAREA_NOT_EXIST〔TP1Error〕

DCADMER_SWAP〔TP1Error〕

DCADMER_SYSTEMCALL〔TP1Error〕

DCCLNER_BUFFER_OVERFLOW〔TP1ClientError〕

DCCLNER_COLLISION_MSG〔TP1ClientError〕

DCCLNER_CONNFREE〔TP1ClientError〕

DCCLNER_CONNREFUSED〔TP1ClientError〕

DCCLNER_EOF〔TP1ClientError〕

DCCLNER_FATAL〔TP1ClientError〕

DCCLNER_INVALID_ARGS〔TP1ClientError〕

DCCLNER_INVALID_HOST〔TP1ClientError〕

DCCLNER_INVALID_MSG〔TP1ClientError〕

DCCLNER_INVALID_PORT〔TP1ClientError〕

DCCLNER_IO〔TP1ClientError〕

DCCLNER_MARSHAL〔TP1ClientError〕

DCCLNER_MESSAGE_TOO_BIG〔TP1ClientError〕

DCCLNER_NETDOWN〔TP1ClientError〕

DCCLNER_NETDOWN_C〔TP1ClientError〕

DCCLNER_NETDOWN_S〔TP1ClientError〕

DCCLNER_NOBUFS〔TP1ClientError〕

DCCLNER_NOT_UP〔TP1ClientError〕

DCCLNER_PARAM〔TP1ClientError〕

DCCLNER_PROTO〔TP1ClientError〕

DCCLNER_REPLY_TOO_BIG〔TP1ClientError〕

DCCLNER_SYS〔TP1ClientError〕

DCCLNER_TIMEOUT〔TP1ClientError〕

DCCLNER_TIMEOUT_C〔TP1ClientError〕

DCCLNER_TIMEOUT_S〔TP1ClientError〕

DCCLNER_UNEXPECT〔TP1ClientError〕

DCCLNTRNER_HAZARD〔TP1ClientError〕

DCCLNTRNER_HAZARD_NO_BEGIN〔TP1ClientError〕

DCCLNTRNER_HEURISTIC〔TP1ClientError〕

DCCLNTRNER_HEURISTIC_NO_BEGIN〔TP1ClientError〕

DCCLNTRNER_NO_BEGIN〔TP1ClientError〕

DCCLNTRNER_RM〔TP1ClientError〕

DCCLNTRNER_ROLLBACK〔TP1ClientError〕

DCCLNTRNER_ROLLBACK_NO_BEGIN〔TP1ClientError〕

DCCLNTRNER_TM〔TP1ClientError〕

DCCLT_RCV_CLOSE〔TP1ClientFlags〕

DCCLT_SND_CLOSE〔TP1ClientFlags〕

DCCM3とのRPC

DCCM3とのTCP/IP通信

DCCM3との接続

DCLOGER_COMM〔TP1Error〕

DCLOGER_DEFFILE〔TP1Error〕

DCLOGER_HEADER〔TP1Error〕

DCLOGER_MEMORY〔TP1Error〕

DCLOGER_NOT_UP〔TP1Error〕

DCLOGER_PARAM_ARGS〔TP1Error〕

DCLOGER_PROTO〔TP1Error〕

DCLOGER_TIMEOUT〔TP1Error〕

DCNJS2ER_INTERNAL〔TP1Error〕

DCNJS2ER_INVALID_ARGS〔TP1Error〕

DCNJS2ER_INVALID_DATA〔TP1Error〕

DCNOFLAGS〔TP1ClientFlags〕

DCPRFER_PARAM〔TP1Error〕

DCRAPER_ALREADY_CONNECT〔TP1Error〕

DCRAPER_MAX_CONNECTION〔TP1Error〕

DCRAPER_MAX_CONNECTION_SV〔TP1Error〕

DCRAPER_NETDOWN〔TP1Error〕

DCRAPER_NOCONTINUE〔TP1Error〕

DCRAPER_NOHOSTNAME〔TP1Error〕

DCRAPER_NOMEMORY〔TP1Error〕

DCRAPER_NOMEMORY_SV〔TP1Error〕

DCRAPER_NOSERVICE〔TP1Error〕

DCRAPER_NOSOCKET〔TP1Error〕

DCRAPER_PANIC_SV〔TP1Error〕

DCRAPER_PARAM〔TP1Error〕

DCRAPER_PROTO〔TP1Error〕

DCRAPER_SHUTDOWN〔TP1Error〕

DCRAPER_SYSCALL〔TP1Error〕

DCRAPER_TIMEDOUT〔TP1Error〕

DCRAPER_TIMEOUT_SV〔TP1Error〕

DCRAPER_UNKNOWN_NODE〔TP1Error〕

DCRPC_CHAINED〔TP1ClientFlags〕

DCRPC_MAX_MESSAGE_SIZE〔TP1Client〕

DCRPC_NOREPLY〔TP1ClientFlags〕

DCRPC_RAP_AUTOCONNECT〔TP1ClientFlags〕

DCRPC_SCD_LOAD_PRIORITY〔TP1ClientFlags〕

DCRPC_TPNOTRAN〔TP1ClientFlags〕

DCRPC_WATCHTIMINHERIT〔TP1ClientFlags〕

DCRPC_WATCHTIMRPCINHERIT〔TP1ClientFlags〕

DCRpcBindTbl

DCRpcBindTbl〔DCRpcBindTbl〕

DCRPCER_ALL_RECEIVED〔TP1Error〕

DCRPCER_FATAL〔TP1Error〕

DCRPCER_INVALID_ARGS〔TP1Error〕

DCRPCER_INVALID_DES〔TP1Error〕

DCRPCER_INVALID_REPLY〔TP1Error〕

DCRPCER_MESSAGE_TOO_BIG〔TP1Error〕

DCRPCER_NET_DOWN〔TP1Error〕

DCRPCER_NO_BUFS_AT_SERVER〔TP1Error〕

DCRPCER_NO_BUFS_RB〔TP1Error〕

DCRPCER_NO_PORT〔TP1Error〕

DCRPCER_NO_SUCH_DOMAIN〔TP1Error〕

DCRPCER_NO_SUCH_SERVICE〔TP1Error〕

DCRPCER_NO_SUCH_SERVICE_GROUP〔TP1Error〕

DCRPCER_NOT_TRN_EXTEND〔TP1Error〕

DCRPCER_OLTF_INITIALIZING〔TP1Error〕

DCRPCER_OLTF_NOT_UP〔TP1Error〕

DCRPCER_PROTO〔TP1Error〕

DCRPCER_REPLY_TOO_BIG〔TP1Error〕

DCRPCER_REPLY_TOO_BIG_RB〔TP1Error〕

DCRPCER_RETRY_COUNT_OVER〔TP1Error〕

DCRPCER_SEC_INIT〔TP1Error〕

DCRPCER_SECCHK〔TP1Error〕

DCRPCER_SERVER_BUSY〔TP1Error〕

DCRPCER_SERVICE_CLOSED〔TP1Error〕

DCRPCER_SERVICE_NOT_UP〔TP1Error〕

DCRPCER_SERVICE_TERMINATED〔TP1Error〕

DCRPCER_SERVICE_TERMINATING〔TP1Error〕

DCRPCER_STANDBY_END〔TP1Error〕

DCRPCER_SYSERR〔TP1Error〕

DCRPCER_SYSERR_AT_SERVER〔TP1Error〕

DCRPCER_SYSERR_AT_SERVER_RB〔TP1Error〕

DCRPCER_SYSERR_RB〔TP1Error〕

DCRPCER_TESTMODE〔TP1Error〕

DCRPCER_TIMED_OUT〔TP1Error〕

DCRPCER_TRNCHK〔TP1Error〕

DCRPCER_TRNCHK_EXTEND〔TP1Error〕

DCTRNER_HAZARD〔TP1Error〕

DCTRNER_HAZARD_NO_BEGIN〔TP1Error〕

DCTRNER_HEURISTIC〔TP1Error〕

DCTRNER_HEURISTIC_NO_BEGIN〔TP1Error〕

DCTRNER_NO_BEGIN〔TP1Error〕

DCTRNER_PROTO〔TP1Error〕

DCTRNER_RM〔TP1Error〕

DCTRNER_ROLLBACK〔TP1Error〕

DCTRNER_ROLLBACK_NO_BEGIN〔TP1Error〕

DCTRNER_TM〔TP1Error〕

debugTrace

delay〔rapService〕

(Ｅ)

ErrAcceptCanceledException

ErrBufferOverflowException

ErrClientTimedOutException

ErrCollisionMessageException

ErrConnfreeException

ErrConnRefusedException

ErrFatalException

ErrHazardException

ErrHazardNoBeginException

ErrHeuristicException

ErrHeuristicNoBeginException

ErrHostUndefException

ErrInitializingException

ErrInvalidArgsException

ErrInvalidMessageException

ErrInvalidPortException

ErrInvalidReplyException

ErrIOErrException

ErrMarshalException

ErrMessageTooBigException

ErrNetDownAtClientException

ErrNetDownAtServerException

ErrNetDownException

ErrNoBeginException

ErrNoBufsAtServerException

ErrNoBufsException

ErrNoSuchServiceException

ErrNoSuchServiceGroupException

ErrNotTrnExtendException

ErrNotUpException

ErrorCode〔TP1Exception〕

ErrProtoException

ErrReplyTooBigException

ErrRMException

ErrRollbackException

ErrRollbackNoBeginException

ErrSecchkException

ErrServerBusyException

ErrServerTimedOutException

ErrServiceClosedException

ErrServiceNotUpException

ErrServiceTerminatedException

ErrServiceTerminatingException

ErrSyserrAtServerException

ErrSyserrException

ErrTestmodeException

ErrTimedOutException

ErrTMException

errTrace

ErrTrnchkException

ErrTrnchkExtendException

ErrVersionException

ExceptionMessage〔TP1RemoteException〕

ExceptionName〔TP1RemoteException〕

expireSuspend〔transaction〕

expireTime〔transaction〕

expireTime〔xarTransaction〕

extendLevel

(Ｆ)

fileCount〔debugTrace〕

fileSize〔dataTrace〕

fileSize〔errTrace〕

fileSize〔methodTrace〕

fileSize〔uapTrace〕

(Ｇ)

GAC〔用語解説〕

GetRecordName〔IRecordインタフェース〕

GetRecordShortDescription〔IRecordインタフェース〕

GetTransactionID〔TP1Client〕

GetTransactionInfo〔TP1Client〕

(Ｈ)

host〔tp1Server〕

hostChange〔scheduleService〕

(Ｉ)

id〔profile〕

if2cstub

Information〔TP1UserException〕

inquireTime〔rapService〕

IntArrayHolder

internalWatchTime〔transaction〕

IntHolder

IRecordインタフェース

(Ｌ)

limitTime〔transaction〕

loadBalance〔nameService〕

LongArrayHolder

LongHolder

(Ｍ)

maxDataSize〔dataTrace〕

maxMessageSize〔rpc〕

methodTrace

MHPのポート番号〔tcpip〕

MSDTC連携機能

multiSchedulerCount〔scheduleService〕

(Ｎ)

nameService

(Ｏ)

OpenConnection〔TP1Client〕 ,[2]

OpenNotification〔TP1Client〕

openPortAtRecv〔tcpip〕

OpenRpc〔TP1Client〕 ,[2]

OpenTP1 for .NET Frameworkとは

OpenTP1 for .NET Frameworkのアプリケーション

OpenTP1 for .NET Frameworkの構成

optimize〔transaction〕

(Ｐ)

path〔dataTrace〕

path〔debugTrace〕

path〔errTrace〕

path〔methodTrace〕

path〔uapTrace〕

port〔nameService〕

port〔rapService〕

port〔scheduleService〕

port〔tp1Server〕

prfInfoSend〔rpc〕

(Ｒ)

randomSelect〔nameService〕

randomSelect〔rapService〕

randomSelect〔scheduleService〕

rapService

rapクライアント

rapサーバ

rapリスナー

rapリスナーのポート番号〔rapService〕

Receive〔TP1Client〕

ReceiveAssembledMessage〔TP1Client〕

recoveryType〔transaction〕

recvPort〔tcpip〕

Rollback〔TP1Client〕

RollbackChained〔TP1Client〕

rollbackInfo〔transaction〕

rollbackResponse〔transaction〕

rpc

RPCインタフェース

RPC送受信メッセージの最大長拡張機能

RPCの形態

RPCの形態によるRPCインタフェースの使用可否

RPCの連鎖

RPCメッセージの最大長〔rpc〕

(Ｓ)

scheduleService

Send〔TP1Client〕

SendAssembledMessage〔TP1Client〕

sendHost〔tcpip〕

sendPort〔tcpip〕

SetConnectInformation〔TP1Client〕

SetDataTraceMode〔TP1Client〕

SetErrorTraceMode〔TP1Client〕

SetExtendLevel〔TP1Client〕

SetMethodTraceMode〔TP1Client〕

SetRapDelay〔TP1Client〕

SetRapInquireTime〔TP1Client〕

SetRecordName〔IRecordインタフェース〕

SetRecordShortDescription〔IRecordインタフェース〕

SetRpcExtend〔TP1Client〕

SetRpcWatchTime〔TP1Client〕

SetTP1Server〔TP1Client〕

SetTraceArray〔TP1Client〕

SetUapTraceMode〔TP1Client〕

ShortArrayHolder

ShortHolder

socket

SPP.NET

SPP.NET〔用語解説〕

spp2cstub

statistics〔transaction〕

StringArrayHolder

StringHolder

SUP.NET

SUP.NET〔用語解説〕

(Ｔ)

TCP/IPコネクションの確立の監視機能

TCP/IP通信機能

TCP/IP通信機能（一方受信）

TCP/IP通信機能（一方送信）

TCP/IP通信機能（送受信，CUP.NETがクライアント）

TCP/IP通信機能（送受信，CUP.NETがサーバ）

TCP/IP通信機能を使用する〔tcpip〕

tcpip

ToString〔TP1Exception〕

ToString〔TP1RemoteException〕

ToString〔TP1UserException〕

TP1/Client for .NET Framework

TP1/Connector for .NET Framework

TP1/Extension for .NET Framework

TP1/ServerとClient .NETとのトレースの照合

TP1/Serverの性能検証用トレース

TP1/Serverへの性能検証用の識別情報の伝播

TP1Client

TP1Client〔TP1Client〕

TP1ClientError

TP1ClientException ,[2]

TP1ClientFlags

TP1Error

TP1Exception ,[2]

TP1MarshalException ,[2]

TP1RemoteException ,[2]

TP1RpcMethod

TP1RpcMethod〔TP1RpcMethod〕

tp1Server

TP1UserException ,[2]

TP1UserException〔TP1UserException〕 ,[2]

TP1ユーザ構造体

transaction

type〔tcpip〕

(Ｕ)

uapTrace

UAPトレース

UAPトレースファイルサイズ〔uapTrace〕

UAPトレースファイル作成ディレクトリ〔uapTrace〕

UAPトレースを取得する〔uapTrace〕

UAPの実行

UByteArrayHolder

UByteHolder

use〔dataTrace〕

use〔errTrace〕

use〔methodTrace〕

use〔rpc〕

use〔tcpip〕

use〔uapTrace〕

useMultiScheduler〔rpc〕

usePriority〔scheduleService〕

(Ｖ)

value〔extendLevel〕

Value〔IntArrayHolder〕

Value〔IntHolder〕

Value〔LongArrayHolder〕

Value〔LongHolder〕

Value〔ShortArrayHolder〕

Value〔ShortHolder〕

Value〔StringArrayHolder〕

Value〔StringHolder〕

Value〔UByteArrayHolder〕

Value〔UByteHolder〕

(Ｗ)

watchTime〔rpc〕

watchTimeInheritance〔rapService〕

watchTimeNotification〔rpc〕

(Ｘ)

xarTransaction

XML Webサービス〔用語解説〕

(ア行)

(あ)

アクセス許可

アセンブリ〔用語解説〕

アプリケーションドメイン〔用語解説〕

アプリケーションベースディレクトリ〔用語解説〕

(い)

一方通知受信機能の処理の流れ

一方通知受信待ち状態の解除

一方通知連続受信機能の処理の流れ

一方通知連続受信機能を使用するときの注意事項

インデクスドレコード〔用語解説〕

インデクスドレコードを使用したRPC

(う)

運用コマンド

運用コマンドの種類

(え)

エラートレース

エラートレースファイルサイズ〔errTrace〕

エラートレースファイル作成ディレクトリ〔errTrace〕

エラートレースを取得する〔errTrace〕

エラーの判定

(お)

オートコネクトモード

(カ行)

(か)

カスタムレコードクラス〔用語解説〕

カスタムレコードクラスの生成

可変長構造体配列

環境設定

完全限定名〔用語解説〕

(き)

機能拡張レベルの設定〔extendLevel〕

キャッシュの有効期限〔nameService〕

共通型システム〔用語解説〕

共通言語仕様〔用語解説〕

共通言語ランタイム〔用語解説〕

(く)

クライアント環境障害

クライアントスタブ〔用語解説〕

クライアントスタブ生成コマンド（.NETインタフェース定義用）

クライアントスタブ生成コマンド（サービス定義用）

クライアントスタブの使用方法 ,[2]

クライアントスタブの生成 ,[2]

グローバルアセンブリキャッシュ〔用語解説〕

グローバルトランザクション

(こ)

構成定義

構成ファイルの形式

コネクション〔用語解説〕

コネクション確立最大監視時間〔socket〕

コネクションプーリング機能〔用語解説〕

コネクションプール〔用語解説〕

コミット ,[2]

(サ行)

(さ)

サーバアプリケーション障害

サーバからの一方通知受信機能

サーバスタブ〔用語解説〕

サービス定義 ,[2]

サービス定義〔用語解説〕

サービス定義ファイル

サービス定義を使用したRPC

サービス定義を使用したSPP.NETまたはSPPの呼び出し方法

サービス要求先スケジューラの情報をキャッシュに格納する〔nameService〕

サービス要求先スケジューラをRPCごとに分散させる

サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散する〔scheduleService〕

最大応答待ち時間〔rpc〕

最大応答待ち時間をrapサーバ側に引き継ぐ〔rapService〕

最大応答待ち時間をサーバ側に引き継ぐ〔rpc〕

最大通信遅延時間〔rapService〕

サンプルプログラムの使用方法

サンプルプログラムのビルド方法

(し)

システム構成

受信ポート固定機能

受信メッセージの組み立て機能

受信用ソケットを開設する契機（送信相手からの接続を待ち受け始める契機）を指定〔tcpip〕

障害時に取得する情報

障害の種類と対処方法

障害発生時のトランザクションの同期点を検証する方法

常設コネクション

常設コネクションを自動的に確立させる〔rapService〕

初期化する環境を指定〔tcpip〕

(す)

スケジューラダイレクト機能を使用したRPC ,[2]

スケジューラデーモンのプロセス数〔scheduleService〕

スケジュールサービスのポート番号〔scheduleService〕

スタブ〔用語解説〕

(せ)

性能検証用トレースに出力する情報としてClient .NET内部で識別情報を付加する

性能検証用の識別情報

セキュリティポリシーの設定

前提条件

(そ)

送信元ホスト〔socket〕

送信元ホスト指定機能

(タ行)

(た)

端末固定割り当て機能

端末識別情報〔rapService〕

端末識別情報設定機能

(つ)

通信形態〔rpc〕

通信形態によるメソッドの発行手順

通信先を指定したRPC

通信障害

(て)

ディレクトリ構成

データ圧縮機能

データ圧縮機能の効果

データ圧縮機能を使用する〔rpc〕

データ型定義

データ型定義〔用語解説〕

データ型定義ファイル

データトレース

データトレースの最大データ長〔dataTrace〕

データトレースファイルサイズ〔dataTrace〕

データトレースファイル作成ディレクトリ〔dataTrace〕

データトレースを取得する〔dataTrace〕

データ変換障害

デバッグトレース

デバッグトレース最大ファイル数〔debugTrace〕

デバッグトレースファイル作成ディレクトリ〔debugTrace〕

(と)

問い合わせ間隔最大時間〔rapService〕

同期応答型RPC

統計情報項目〔transaction〕

動的定義変更機能 ,[2]

トラブルシュート機能

トランザクション完了限界時間〔transaction〕

トランザクション最適化項目〔transaction〕

トランザクション制御機能

トランザクション同期点処理時の最大通信待ち時間〔transaction〕

トランザクション同期点処理方式〔transaction〕

トランザクションの開始と同期点取得

トランザクションブランチ

トランザクションブランチCPU監視時間〔transaction〕

トランザクションブランチ限界経過時間〔transaction〕

トランザクションブランチ限界経過時間〔xartransaction〕

トランザクションブランチ最大実行可能時間〔transaction〕

トランザクションブランチの処理を監視〔transaction〕

トレース情報の取得ポイント

トレースファイル

(ナ行)

(な)

名前空間〔用語解説〕

(ね)

ネームキャッシュの最大エントリ数〔nameService〕

ネームサービスのポート番号〔nameService〕

ネームサービスを使用したRPC ,[2]

(の)

ノータッチデプロイメントによるCUP.NETの配布

ノード間負荷バランス機能

ノードのホスト名〔tcpip〕

(ハ行)

(は)

バイナリデータを使用したRPC

バイナリデータを使用したSPP.NETまたはSPPの呼び出し方法

バウンダリ調整

バッファプーリング機能〔用語解説〕

バッファプール〔用語解説〕

(ひ)

非応答型RPC

非オートコネクトモード

非連鎖モード

(ふ)

プロファイルID〔profile〕

(マ行)

(ま)

マスタスケジューラデーモン

窓口となるOpenTP1のポート番号〔tp1Server〕

窓口となるOpenTP1のホスト名〔tp1Server〕

窓口となるTP1/Serverをランダムに選択する〔nameService〕

窓口となるTP1/Serverをランダムに選択する〔rapService〕

窓口となるTP1/Serverをランダムに選択する〔scheduleService〕

マルチスケジューラ機能

マルチスケジューラ機能を使用したRPC

マルチスケジューラ機能を使用する〔useMultiScheduler〕

マルチスケジューラデーモン

マルチホームドホスト形態のTP1/Serverに対してRPCを行う場合の定義

(め)

メソッドトレース

メソッドトレースファイルサイズ〔methodTrace〕

メソッドトレースファイル作成ディレクトリ〔methodTrace〕

メソッドトレースを取得する〔methodTrace〕

メッセージ受信時の注意事項

メッセージ受信障害

メッセージ送信時の注意事項

メッセージの一方受信

メッセージの一方送信

メッセージの出力先

メッセージの送受信

メモリトレース

(ラ行)

(り)

リモートAPI機能を使用したRPC

リモートAPI機能を使用したRPC〔オートコネクトモード〕

リモートAPI機能を使用したRPC〔非オートコネクトモード〕

リモートプロシジャコール（RPC）

(る)

ルートトランザクションブランチ

(れ)

例外の捕捉

連鎖，非連鎖モードでのコミット

連鎖RPC

連鎖モード

(ろ)

ローカルトランザクション

ロールバック ,[2]

ロールバック完了通知を受信する〔transaction〕

ロールバック要因に関する情報をログに取得する〔transaction〕

■ 商標類

ActiveXは，米国およびその他の国における米国Microsoft Corp.の商標です。
Internet Explorerは，米国Microsoft Corporationの米国及びその他の国における登録商標または商標です。
Microsoftは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
MSDNは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
SOAP（Simple Object Access Protocol）は，分散ネットワーク環境においてXMLベースの情報を交換するための通信プロトコルの名称です。
Visual Basicは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Visual Studioは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windowsは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windows Serverは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
Windows Vistaは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
X/Openは，X/Open Company Limited の英国ならびに他の国における登録商標です。

本書には，X/Openの許諾に基づき X/Open CAE Specification System Interfaces and Headers，Issue4，（C202 ISBN 1-872630-47-2）Copyright（C）July 1992， X/Open Company Limited の内容が含まれています;
なお，その一部は IEEE Std 1003.1-1990，（C）1990 Institute of Electrical and Electronics Engineers，Inc.及び IEEE std 1003.2/D12，（C）1992 Institute of Electrical and Electronics Engineers，Inc.を基にしています。

事前に著作権所有者の許諾を得ずに，本書の該当部分を複製，複写及び転記することは禁じられています。

本書には，X/Openの許諾に基づき X/Open X/Open Preliminary Specification Distributed Transaction Processing：The TxRPC Specification（P305 ISBN 1-85912-000-8）Copyright（C）July 1993， X/Open Company Limited の内容が含まれています;

事前に著作権所有者の許諾を得ずに，本書の該当部分を複製，複写及び転記することは禁じられています。

本書には，Open Software Foundation，Inc. が著作権を有する内容が含まれています。
This document and the software described herein are furnished under a license，and may be used and copied only in accordance with the terms of such license and with the inclusion of the above copyright notice. Title to and ownership of the document and software remain with OSF or its licensors.