付録A TP1/LiNKのアプリケーションプログラミングインタフェース

TP1/LiNKのアプリケーションプログラミングインタフェースについて説明します。

<この節の構成>
(1) アプリケーションプログラミングインタフェースの機能
(2) マニュアル「OpenTP1 プログラム作成の手引」を参照するときの注意
(3) ライブラリ関数の一覧
(4) アプリケーションプログラム作成時の注意事項

(1) アプリケーションプログラミングインタフェースの機能

TP1/LiNKのAPIを次に示します。各機能については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

(a) リモートプロシジャコール

アプリケーションのプロセス同士で,C言語の関数呼び出しと同様の方法で通信できます。サービスを要求する側(クライアント)は,サービスを提供する側(サーバ)のネットワーク内の位置を意識する必要はありません。

(b) リモートAPI機能関連

リモートAPI機能を使うときに,ユーザサーバから常設コネクションを確立したり解放したりできます。

(c) システム管理関連

アプリケーションからコマンドを実行したり,アプリケーションのプロセスの状態を取得したりできます。

(d) メッセージログ関連

TP1/LiNKから通知されるシステムメッセージと同様の出力先に,アプリケーションからメッセージログを出力できます。

(e) トランザクション制御

アプリケーションからトランザクションの開始と終了を宣言して,処理の単位を管理できます。TP1/LiNKのオプション機能です。

トランザクション制御を使うユーザサーバは,TP1/LiNKのトランザクション機能が前提です。トランザクション制御をする場合は,TP1/LiNKとユーザサーバの環境を設定するときに,トランザクション機能を使うことを指定しておきます。

TP1/LiNKのアプリケーションプログラムで使えるトランザクション制御には,次に示す2種類があります。

(2) マニュアル「OpenTP1 プログラム作成の手引」を参照するときの注意

マニュアル「OpenTP1 プログラム作成の手引」は,分散トランザクション処理機能OpenTP1(TP1/Server Base)のアプリケーションプログラムの機能についても記述してあります。そのため,TP1/LiNKのアプリケーションでは使えない機能の説明もあります。マニュアルの読書手順を参照して,TP1/LiNKで使える機能の記述を参照してください。

(3) ライブラリ関数の一覧

TP1/LiNKのアプリケーションで使えるライブラリ関数の一覧を次の表に示します。

TP1/Messagingで使えるライブラリ関数についてはマニュアル「TP1/Messaging 使用の手引」を,TP1/Message Queueで使えるライブラリ関数についてはマニュアル「TP1/Message Queue 使用の手引」を参照してください。

注※
TP1/LiNKのVersion 7に対応するTP1/Message Queueは,現時点では未発行です。発行時期をご確認ください。

 

表A-1 アプリケーションで使えるライブラリ関数の一覧

TP1/LiNKのライブラリ関数SUPSPPオフラインの業務をするUAP
トランザクションでないトランザクション処理
(ルート)
トランザクションでないトランザクション処理
ルートルート以外
リモートプロシジャコール関連
(OpenTP1独自のインタフェース)
dc_rpc_openM
dc_rpc_mainloopM
dc_rpc_call
dc_rpc_call_to
dc_rpc_cltsend
dc_rpc_poll_any_replies
dc_rpc_get_error_descriptor
dc_rpc_discard_further_replies
dc_rpc_discard_specific_reply
dc_rpc_service_retryS
dc_rpc_get_service_prio
dc_rpc_set_service_prio
dc_rpc_get_watch_time
dc_rpc_set_watch_time
dc_rpc_get_callers_address
dc_rpc_get_gateway_address
dc_rpc_closeM
リモートAPI機能関連dc_rap_connect
dc_rap_disconnect
システム管理関連dc_adm_call_command
dc_adm_complete
dc_adm_status
メッセージログdc_logprint
監査ログの出力dc_log_audit_print
リアルタイム統計情報サービスdc_rts_utrace_put
トランザクション関連
(OpenTP1独自のインタフェース)
dc_trn_begin
dc_trn_chained_commit
dc_trn_chained_rollback
dc_trn_unchained_commit
dc_trn_unchained_rollback
dc_trn_info
dc_trn_rm_select
トランザクション関連
(TXインタフェース)
tx_begin
tx_close
tx_commit
TX_CHAINED指定
tx_commit
TX_UNCHAINED指定
tx_info
tx_open
tx_rollback
TX_CHAINED指定
tx_rollback
TX_UNCHAINED指定
tx_set_commit_return
tx_set_transaction_control
tx_set_transaction_timeout
(凡例)
○:該当する条件で使えます。
M:メイン関数だけで使えます。
S:サービス関数だけで使えます。
-:該当する条件では使えません。
注※
この関数を呼び出すユーザサーバを使えるのは,TP1/LiNKでトランザクション機能を使う設定をしているときだけです。

(4) アプリケーションプログラム作成時の注意事項

(a) TP1/LiNKのユーザアプリケーションプログラム(UAP)をシングルスレッド環境で実行

TP1/LiNKのUAPは,メインスレッド以外にスレッドを作成しないで,シングルスレッド環境で実行してください。メインスレッド以外のスレッドを作成して実行すると(マルチスレッド環境),UAPが誤動作して異常終了するおそれがあります。ただし,OpenTP1下のUAPはDLLを使用したマルチスレッド環境で動作するため,UAP作成時に指定するリンケージランタイムライブラリには,msvcrt.libを指定してください。

JNI(Java Native Interface)などのスレッドが生成されるコーディングはしないでください。この場合の動作は保証できません。

(b) UAPメッセージのイベントビューアへの出力

dc_logprint関数(COBOL言語の場合はCBLDCLOG('PRINT '))を使用したメッセージは,Windowsのイベントビューアに出力されます。なお,引数(COBOL言語の場合はデータ領域)に値を設定する場合,次の点に注意してください。

(c) Micro Focus Net Expressを使用する場合

COBOL2002を使用している場合,この注意は該当しません。

(d) dc_adm_call_command関数,システム運用の管理のCOBOL-UAP作成用プログラム(CBLDCADM)を使用する場合
(e) プロセス,スレッドを停止させる関数またはメソッドの呼び出し

TP1/LiNKのUAPでは,サービス関数(SPP)およびサービスメソッド(SPP.NET)内で,プロセスおよびスレッドを停止させる関数またはメソッドを呼び出さないでください。呼び出した場合,次に示す現象が発生することがあります。

(f) Visual Studioで作成したデバッグバージョンのオブジェクトファイル

Visual Studioで作成したデバッグバージョンのオブジェクトファイルは,Visual Studioがインストールされていない環境では動作させることができないおそれがあります。Visual Studioがインストールされていない環境でデバッグする場合,リンケージされたdllファイルおよびマニフェストファイルの内容を確認して,適切なマニフェストファイルを作成してください。マニフェストファイルの詳細については,Visual Studioのマニュアルのマニフェストについての記述を参照してください。

(g) Visual StudioとCOBOLの環境が共存する場合

Visual StudioとCOBOLが共存する環境で,各言語のコンパイルを実行する場合は,各言語の環境変数が,ほかの言語より前に設定されていることを確認してください。ほかの言語の環境変数が各言語の環境変数より前に設定されていると,意図しないリンケージが実行されるおそれがあります。

(h) Visual StudioとHitachi COBOL2002を併用する場合

COBOL2002は,Visual Studio .NET 2002によって作成しています。このため,Visual Studio 2005で作成したオブジェクトを,ccbl2002コマンドやCOBOL2002に含まれるリンカ(LINK.EXE)でリンクすると,エラーが発生します。次に示す手順に従って環境設定をしたあとでリンケージしてください。

  1. 環境変数PATHおよびLIBに,COBOLのパスがVisual Studioのパスより前になるように設定してください。
  2. SPP用のスタブをコンパイルする場合,/Zlオプションを指定してください。
  3. SPP用のスタブ以外のCプログラムは,DLLとして作成してください。

COBOL2002 02-00以降は,このエラーは発生しません。COBOL2002 02-00以降とVisual Studio併用時の注意事項については,COBOL2002のリリースノートの注意事項をご確認ください。

(i) WinSockのライブラリを使用する場合

WinSockのライブラリを使用する場合,TP1の通信処理ができなくなるため,次に示す関数を発行しないでください。