8.1.1 コーディング
(1) コーディング規約
マスク出口ルーチンをコーディングする場合,C言語またはCOBOL2002言語を使います。マスク出口ルーチンでは,TP1/EE,TP1/XTC,TP1/MCP,TP1/FSPのライブラリ関数は使えません。これらが提供する機能を使用した場合の動作は保証しないので注意してください。OSの標準の機能は使えます。コーディング規約については,マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」およびDBMSのリファレンスマニュアルを参照してください。ただし,次の規約は変更します。
-
chdir(カレントワーキングディレクトリを変更)は使用可能
-
fork(新プロセスの生成),exec(ファイルの実行),system(シェルコマンドの実行)は,使用不可
これらに加え,マスク出口ルーチンのコーディング規約として,次を追加します。
-
64bit環境
-
exit(プロセスの終了)の実行不可
-
標準出力,標準エラー出力のクローズ不可
なお,編集出力コマンドは,グループ管理表および履歴情報表を参照します。このため,編集出力コマンドが処理対象とする表について,マスク出口ルーチン内で表を削除することはできません。
(2) C言語インタフェース
(a) 形式
#include <eetrn_mer.h> EELONG マスク出口ルーチン名( char *info_pt /* 履歴情報のアドレス */ ,unsigned int info_len /* 履歴情報長 */ ,char *mask_pt /* マスクパターンのアドレス */ ,EELONG flags /* フラグ */ )
(b) 編集出力コマンドが値を設定する引数
- info_pt
-
編集出力する履歴情報のコピーを格納したエリアの先頭アドレスを指定します。この内容を変更しても,マスク対象外部分の編集出力内容に影響しません。
- info_len
-
編集出力する履歴情報長を指定します。
- mask_pt
-
マスクパターンを格納するエリアの先頭アドレスを指定します。履歴情報と同じ長さのエリアであり,バイト単位に履歴情報のマスク有無を示します。設定値を次に示します。
- EETRN_MER_ON
-
マスク対象とします。自動マスク部分に設定します。
- EETRN_MER_OFF
-
マスク対象としません。履歴情報共通インデクスに設定します。
- flags
-
EENOFLAGSを設定します。
(c) マスク出口ルーチンで値を設定する引数
- mask_pt
-
マスク有無を変更したい部分を次の値で変更します。ほかの値を設定すると,コマンドはエラー終了します。その場合の出力例は,「8.1.4 不正なマスクパターンを検知したときの後処理」を参照してください。
- EETRN_MER_ON
-
マスク対象とします。該当する個所のダンプ出力に"*"を出力します。
- EETRN_MER_OFF
-
マスク対象としません。該当する個所のダンプ出力に,値に応じたデータを出力します。
(d) リターン値
- EE_OK
-
コマンドは処理続行します。
- EETRN_MER_NG
-
重大なエラーが発生したので処理を中断します。
(e) 注意事項
C++コンパイラを使用する場合,関数の宣言はextern "C"{…}で囲んでください。コンパイラによって関数のシンボル名がマングルされ,MASKEXTオペランドに指定できない名称になるためです。
(3) COBOL2002言語インタフェース
(a) 形式
IDENTIFICATION DIVISION. PROGRAM-ID. 一意名1. LINKAGE SECTION. 01 一意名2 PIC S9(9) USAGE COMP. 01 一意名3 ADDRESS. 01 一意名4 PIC S9(9) USAGE COMP. 01 一意名5 ADDRESS. 01 一意名6 PIC S9(9) USAGE COMP. PROCEDURE DIVISION USING BY VALUE 一意名3 一意名4 一意名5 一意名6 RETURNING 一意名2.
(b) 編集出力コマンドが値を設定する引数
- 一意名3
-
編集出力する履歴情報のコピーを格納したエリアの先頭アドレスを指定します。この内容を変更しても,マスク対象外部分の編集出力内容に影響しません。
- 一意名4
-
編集出力する履歴情報長を指定します。
- 一意名5
-
マスクパターンを格納するエリアの先頭アドレスを指定します。履歴情報と同じ長さのエリアであり,バイト単位に履歴情報のマスク有無を示します。設定値を次に示します。
- (FF)16
-
マスク対象とします。自動マスク部分に設定します。
- (00)16
-
マスク対象としません。履歴情報共通インデクスに設定します。
- 一意名6
-
0を設定します。
(c) マスク出口ルーチンで値を設定する引数
- 一意名5
-
マスク有無を変更したい部分を次の値で変更します。ほかの値を設定すると,コマンドはエラー終了します。その場合の出力例は,「8.1.4 不正なマスクパターンを検知したときの後処理」を参照してください。
- (FF)16
-
マスク対象とします。該当する個所のダンプ出力に"*"を出力します。
- (00)16
-
マスク対象としません。該当する個所のダンプ出力に,値に応じたデータを出力します。
(d) リターン値
0:コマンドは処理続行します。
8:重大なエラーが発生したので処理を中断します。
(e) 注意事項
一意名1を,MASKEXTオペランドのマスク出口ルーチン名に記述してください。