次の例は,
VAXC$CRTL_INIT関数を使って HP C RTL を呼び出す Pascal プログラムを示しています。
OpenVMS Alpha システムの場合:
$ PASCAL EXAMPLE
$ LINK EXAMPLE,SYS$LIBRARY:VAXCRTL/LIB
$ TY EXAMPLE.PAS
PROGRAM TESTC(input, output);
PROCEDURE VAXC$CRTL_INIT; extern;
BEGIN
VAXC$CRTL_INIT;
END
$
|
共用可能イメージがこの関数を呼び出す必要があるのは,そのイメージがシグナル処理,環境変数,I/O,終了処理,およびデフォルト・ファイル保護マスクのための
HP C 関数を含んでいるか,コンテキストを継承しなくてはならない子プロセスである場合に限られます。
多くの初期化活動は 1 回しか実行されませんが,
DECC$CRTL_INITは何度呼び出しても安全です。 OpenVMS VAX システムでは,
DECC$CRTL_INITは,
DECC$CRTL_INITが呼び出されるたびに,
DECC$CRTL_INITを呼び出したルーチンのフレーム内で,
HP C RTL の内部 OpenVMS 例外ハンドラを設定します。
OpenVMS 例外が UNIX シグナルにマップされるためには,現在のコール・スタックの中の少なくとも 1 つのフレームがハンドラを設定している必要があります。