TP1/LiNKのアプリケーションプログラミングインタフェースについて説明します。
TP1/LiNKのAPIを次に示します。各機能については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。
アプリケーションのプロセス同士で,C言語の関数呼び出しと同様の方法で通信できます。サービスを要求する側(クライアント)は,サービスを提供する側(サーバ)のネットワーク内の位置を意識する必要はありません。
リモートAPI機能を使うときに,ユーザサーバから常設コネクションを確立したり解放したりできます。
アプリケーションからコマンドを実行したり,アプリケーションのプロセスの状態を取得したりできます。
TP1/LiNKから通知されるシステムメッセージと同様の出力先に,アプリケーションからメッセージログを出力できます。
アプリケーションからトランザクションの開始と終了を宣言して,処理の単位を管理できます。TP1/LiNKのオプション機能です。
トランザクション制御を使うユーザサーバは,TP1/LiNKのトランザクション機能が前提です。トランザクション制御をする場合は,TP1/LiNKとユーザサーバの環境を設定するときに,トランザクション機能を使うことを指定しておきます。
TP1/LiNKのアプリケーションプログラムで使えるトランザクション制御には,次に示す2種類があります。
マニュアル「OpenTP1 プログラム作成の手引」は,分散トランザクション処理機能OpenTP1(TP1/Server Base)のアプリケーションプログラムの機能についても記述してあります。そのため,TP1/LiNKのアプリケーションでは使えない機能の説明もあります。マニュアルの読書手順を参照して,TP1/LiNKで使える機能の記述を参照してください。
TP1/LiNKのアプリケーションで使えるライブラリ関数の一覧を次の表に示します。
TP1/Messagingで使えるライブラリ関数についてはマニュアル「TP1/Messaging 使用の手引」を,TP1/Message Queue※で使えるライブラリ関数についてはマニュアル「TP1/Message Queue 使用の手引」を参照してください。
表A-1 アプリケーションで使えるライブラリ関数の一覧
TP1/LiNKのライブラリ関数 | SUP | SPP | オフラインの業務をするUAP | ||||
---|---|---|---|---|---|---|---|
トランザクションでない | トランザクション処理 (ルート) | トランザクションでない | トランザクション処理 | ||||
ルート | ルート以外 | ||||||
リモートプロシジャコール関連 (OpenTP1独自のインタフェース) | dc_rpc_open | ○ | - | ○M | - | - | - |
dc_rpc_mainloop | - | - | ○M | - | - | - | |
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_retry | - | - | ○S | - | - | - | |
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_close | ○ | - | ○M | - | - | - | |
リモート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※ | ○ | ○ | ○ | ○ | ○ | - |
TP1/LiNKのUAPは,メインスレッド以外にスレッドを作成しないで,シングルスレッド環境で実行してください。メインスレッド以外のスレッドを作成して実行すると(マルチスレッド環境),UAPが誤動作して異常終了するおそれがあります。ただし,OpenTP1下のUAPはDLLを使用したマルチスレッド環境で動作するため,UAP作成時に指定するリンケージランタイムライブラリには,msvcrt.libを指定してください。
JNI(Java Native Interface)などのスレッドが生成されるコーディングはしないでください。この場合の動作は保証できません。
dc_logprint関数(COBOL言語の場合はCBLDCLOG('PRINT '))を使用したメッセージは,Windowsのイベントビューアに出力されます。なお,引数(COBOL言語の場合はデータ領域)に値を設定する場合,次の点に注意してください。
COBOL2002を使用している場合,この注意は該当しません。
TP1/LiNKのUAPでは,サービス関数(SPP)およびサービスメソッド(SPP.NET)内で,プロセスおよびスレッドを停止させる関数またはメソッドを呼び出さないでください。呼び出した場合,次に示す現象が発生することがあります。
Visual Studioで作成したデバッグバージョンのオブジェクトファイルは,Visual Studioがインストールされていない環境では動作させることができないおそれがあります。Visual Studioがインストールされていない環境でデバッグする場合,リンケージされたdllファイルおよびマニフェストファイルの内容を確認して,適切なマニフェストファイルを作成してください。マニフェストファイルの詳細については,Visual Studioのマニュアルのマニフェストについての記述を参照してください。
Visual StudioとCOBOLが共存する環境で,各言語のコンパイルを実行する場合は,各言語の環境変数が,ほかの言語より前に設定されていることを確認してください。ほかの言語の環境変数が各言語の環境変数より前に設定されていると,意図しないリンケージが実行されるおそれがあります。
COBOL2002は,Visual Studio .NET 2002によって作成しています。このため,Visual Studio 2005で作成したオブジェクトを,ccbl2002コマンドやCOBOL2002に含まれるリンカ(LINK.EXE)でリンクすると,エラーが発生します。次に示す手順に従って環境設定をしたあとでリンケージしてください。
COBOL2002 02-00以降は,このエラーは発生しません。COBOL2002 02-00以降とVisual Studio併用時の注意事項については,COBOL2002のリリースノートの注意事項をご確認ください。
WinSockのライブラリを使用する場合,TP1の通信処理ができなくなるため,次に示す関数を発行しないでください。