Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


1.1.2 コーディング規約

〈この項の構成〉

(1) コーディング上の注意

OpenTP1のUAPのコーディングには,C言語,およびC++言語を使えます。C言語の場合,ANSI Cの形式 またはANSI準拠前のK&Rの形式のどちらかに従ってコーディングします。C++言語の場合,C++言語の仕様でコーディングします。一部の制限はありますが,OSで標準に提供するライブラリにある関数は,OpenTP1のライブラリにある関数とあわせて使えます。

さらに,システムコールや任意のプログラムのライブラリも使えますが,コーディング時には,UAPの移植性を高めるため,OSで標準に提供する関数やシステムコールを使うことをお勧めします。

システムコールや任意のプログラムのライブラリを使うUAPを作成するときは,次のことに注意してください。

  1. UAPでシグナルを使うときは,SIGILLやSIGBUSなどシグナルのデフォルト動作がコアファイルを作成するタイプのシグナルハンドラを登録しないでください。これらのシグナルハンドラを登録すると,プログラムが異常終了してもコアファイルが作成されないため,トラブルシュートができない場合があります。

  2. UAPでシグナルを使うときは,シグナルハンドラからはOpenTP1のライブラリにある関数は呼び出さないでください。

  3. 次のシステムコールは使わないでください。

    • chdir(カレントワーキングディレクトリを変更)

  4. dc_rpc_open関数を呼び出したあとには,次のシステムコールは使わないでください。

    • fork(新プロセスの生成)

    • exec(ファイルの実行)

    • system(シェルコマンドの発行)

  5. C言語のライブラリ中の,関数間にわたるジャンプ関数(setjmp,longjmp)は使わないでください。

  6. ほかのプログラムのライブラリを使うときは,XlibやOSF/Motifなどの,イベント駆動型のディスパッチング制御をする関数は使わないでください。

  7. dc_rpc_open関数発行後,UAPプロセスでオープンするファイルディスクリプタの最大数を変更しないでください。変更した場合の動作は保証できません。

OSがHP-UXの場合,リンケージ時のバインドモードには必ず"immediate"を指定してください。"immediate"以外のバインドモードで作成した実行形式ファイルをOpenTP1のUAPとして使った場合,システムの動作は保証しません。作成したUAPのバインドモードが"immediate"かどうかは,OSのchatrコマンドで確認してください。

(2) 名称の付け方の注意

ユーザがコーディングする変数名や定義名などには,先頭に何文字かのプレフィックスを付加することをお勧めします。OSやOpenTP1などと名称が重複した場合の動作は保証しません。

(a) サービス関数名

サービス関数の名称は,20文字以内の長さで,先頭が英字で始まる英数字を付けます。サービス関数名には,次の名称は使わないでください。

  • "dc"で始まる名称

  • "CBLDC"で始まる名称

  • "tx",または"TX"で始まる名称

  • "tp",または"TP"で始まる名称

(b) 外部変数名

外部変数名には,次の名称は使わないでください。ただし,このマニュアルの記述に従って使う場合を除きます。

  • "dc"で始まる名称

  • "CBLDC"で始まる名称

  • "tx",または"TX"で始まる名称

  • "tp",または"TP"で始まる名称

(c) 定数名

#define文で定義する定数名には,次の名称は使わないでください。ただし,このマニュアルの記述に従って使う場合を除きます。

  • "DC"で始まる名称

  • "CBLDC"で始まる名称

  • "TX"で始まる名称

  • "TP"で始まる名称

(3) 終了のしかたについて

C言語で作成したUAPのプロセスで,一度でもCOBOL言語のプログラムを実行した場合は,CBLEND関数を使ってexitしてください。CBLEND関数を使わないで終了すると,COBOL言語のカウント情報などが出力されません。CBLEND関数については,該当するCOBOL言語のマニュアルを参照してください。

(4) Windowsを使う場合

OpenTP1(TP1/LiNK)をWindowsで使う場合に,UAPをコンパイル,リンケージするときは,Windowsで使うCコンパイラの仕様に従ってください。

(5) TP1/Message Controlを使う場合

C言語で作成した32ビットアーキテクチャのVersion 6で使用していたユーザアプリケーションプログラムおよびユーザオウンコーディングのソースファイルを32ビットアーキテクチャのVersion 7で使用する場合,および,C言語で作成した64ビットアーキテクチャのVersion 6で使用していたユーザアプリケーションプログラムおよびユーザオウンコーディングのソースファイルを64ビットアーキテクチャのVersion 7で使用する場合,ユーザアプリケーションプログラムおよびユーザオウンコーディングのソースファイルをそのまま使用できます。