1.1.2 コーディング規約
(1) コーディング上の注意
OpenTP1のUAPのコーディングには,C言語,およびC++言語を使えます。C言語の場合,ANSI Cの形式 またはANSI準拠前のK&Rの形式のどちらかに従ってコーディングします。C++言語の場合,C++言語の仕様でコーディングします。一部の制限はありますが,OSで標準に提供するライブラリにある関数は,OpenTP1のライブラリにある関数とあわせて使えます。
さらに,システムコールや任意のプログラムのライブラリも使えますが,コーディング時には,UAPの移植性を高めるため,OSで標準に提供する関数やシステムコールを使うことをお勧めします。
システムコールや任意のプログラムのライブラリを使うUAPを作成するときは,次のことに注意してください。
-
UAPでシグナルを使うときは,SIGILLやSIGBUSなどシグナルのデフォルト動作がコアファイルを作成するタイプのシグナルハンドラを登録しないでください。これらのシグナルハンドラを登録すると,プログラムが異常終了してもコアファイルが作成されないため,トラブルシュートができない場合があります。
-
UAPでシグナルを使うときは,シグナルハンドラからはOpenTP1のライブラリにある関数は呼び出さないでください。
-
次のシステムコールは使わないでください。
-
chdir(カレントワーキングディレクトリを変更)
-
-
dc_rpc_open関数を呼び出したあとには,次のシステムコールは使わないでください。
-
fork(新プロセスの生成)
-
exec(ファイルの実行)
-
system(シェルコマンドの発行)
-
-
C言語のライブラリ中の,関数間にわたるジャンプ関数(setjmp,longjmp)は使わないでください。
-
ほかのプログラムのライブラリを使うときは,XlibやOSF/Motifなどの,イベント駆動型のディスパッチング制御をする関数は使わないでください。
-
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"で始まる名称