HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
この節では,個々の DEC XTPU ルーチンについて,ルーチン・プレート形式で説明します。
ユーザ作成ルーチン FILEIO は,DEC XTPU のファイル操作を処理するのに使用されます。このルーチンの名前は,ユーザ独自のファイル入出力ルーチンのものであるか,または DEC XTPU のファイル入出力ルーチンの名前 (XTPU$FILEIO) のいずれかです。
FILEIO code, stream, data
OpenVMS 用法 条件値 データ型 符号なしロングワード アクセス 書き込みのみ 受け渡し方 参照による
ロングワードの条件値です。ユーティリティ・ルーチンはほとんど,条件値を R0 に戻します。このルーチンから戻される可能性のある条件値は,"戻される条件値"にまとめられています。
code
OpenVMS 用法 符号なしロングワード データ型 符号なしロングワード アクセス 読み取りのみ 受け渡し方 ディスクリプタによる
実行する機能を指定するDEC XTPU からのアイテム・コードです。code 引数は実行する機能を指定するDEC XTPU からのアイテム・コードを含むロングワードのアドレスです。stream
OpenVMS 用法 未指定 データ型 符号なしロングワード アクセス 変更 受け渡し方 参照による
ファイル記述です。stream 引数は,4つのロングワードを含むデータ構造のアドレスです。このデータ構造は,操作するファイルを記述するために使用されます。data
OpenVMS 用法 アイテム・リスト3 データ型 符号なしロングワード アクセス 変更 受け渡し方 参照による
ストリーム・データです。data 引数はアイテム・リストのアドレス,またはディスクリプタのアドレスです。このパラメータの値は,どのアイテム・コードを指定したかによって異なります。
このルーチンのバウンド・プロシージャ値は,コールバック・ルーチンによって作成されたアイテム・リストの中に指定されているものです。このルーチンは,ファイル操作を実行するために呼び出されます。ユーザが作成した独自のファイル入出力ルーチンを使用する代わりに,処理させるファイル操作をパラメータとして XTPU$FILEIO を呼び出すことができます。ただし,XTPU$FILEIO は,それがオープンしたファイルについてはすべての入出力要求を処理しなければならず,また,オープンしていないファイルに対しては何らの入出力要求も処理できないことに注意してください。言い換えれば,ファイル操作に関し,ユーザ独自のファイル入出力ルーチンとDEC XTPU の用意しているルーチンとを組み合わせることはできません。
戻される条件値はユーザによって決められ,操作の正常終了あるいは失敗を指示します。
ユーザ作成ルーチン HANDLER は,条件処理を実行します。
HANDLER signal_vector, mechanism_vector
OpenVMS 用法 条件値 データ型 符号なしロングワード アクセス 書き込みのみ 受け渡し方 値による
ロングワードの条件値です。
signal_vector
OpenVMS 用法 引数リスト データ型 符号なしロングワード アクセス 変更 受け渡し方 参照による
シグナル・ベクタです。条件ハンドラに渡されるシグナル・ベクタについての説明は,『OpenVMS System Services Reference Manual』を参照してください。mechanism_vector
OpenVMS 用法 引数リスト データ型 符号なしロングワード アクセス 読み取りのみ 受け渡し方 参照による
メカニズム・ベクタです。条件ハンドラに渡されるメカニズム・ベクタについての説明は,『OpenVMS System Services Reference Manual』を参照してください。
条件ハンドラの作成方法と,OpenVMS 条件処理標準についての詳しい説明が必要な場合には,『OpenVMS Programming Interfaces: Calling a System Routine』または『OpenVMS Calling Standard』を参照してください。ユーザが独自に条件ハンドラを作成する代わりに,省略時の条件ハンドラである XTPU$HANDLER を利用することができます。条件ハンドラを独自に作成する場合には,DEC XTPU の内部シグナルを操作するため,そのルーチンは受け取ったのと同じパラメータで XTPU$HANDLER を呼び出さなければなりません。
初期化コールバック・ルーチン INITIALIZE は,XTPU$INITIALIZE にバウンド・プロシージャ値として渡され,DEC XTPU の初期化に必要な情報を得るために呼び出されるユーザ作成ルーチンです。
INITIALIZE [user_arg]
OpenVMS 用法 アイテム・リスト データ型 符号なしロングワード アクセス 書き込みのみ 受け渡し方 参照による
このルーチンは,アイテム・リストのアドレスを返します。
user_arg
OpenVMS 用法 ユーザ引数 データ型 符号なしロングワード アクセス 読み取りのみ 受け渡し方 値による
初期化コールバック・ルーチン INITIALIZE は,XTPU$INITIALIZE にバウンド・プロシージャ値として渡され,DEC XTPU の初期化に必要な情報を得るために呼び出されるユーザ作成ルーチンです。XTPU$INITIALIZE で user_arg パラメータが指定された時には,初期化コールバック・ルーチンは,そのパラメータだけを使って呼ばれます。 XTPU$INITIALIZE で user_arg パラメータが指定されなかった時には,初期化コールバック・ルーチンはパラメータなしで呼ばれます。
パラメータ user_arg によって,アプリケーションは XTPU$INITIALIZE を通してユーザによって書かれた初期化ルーチンに情報を渡すことができます。 DEC XTPU はこのデータを解釈しません。
この初期化コールバック・ルーチンは,初期化パラメータのアイテム・リストのアドレスを返すものと期待されています。そのアイテム・リストはこの初期化コールバック・ルーチンのスコープの外で用いられるため,静的メモリ内に割り当てられる必要があります。
このアイテム・リスト・エントリは XTPU$INITIALIZE のセクションに記述されています。ほとんどの初期化パラメータには省略値があります。省略時の文字列はヌル文字列です。省略時のフラグは FALSE です。唯一必要な初期化パラメータはファイル入出力のためのルーチンのアドレスです。ファイル入出力ルーチンのアドレスがアイテム・リストにないと,XTPU$INITIALIZE はエラー・ステータスを返します。
ユーザ作成ルーチン USER を使用することによって,ユーザ・プログラムは DEC XTPU の編集セッション中に制御を取ることができます (たとえば,一時的にエディタを離れ,計算を実行するなど)。
USER integer, stringin, stringout
OpenVMS 用法 条件値 データ型 符号なしロングワード アクセス 書き込みのみ 受け渡し方 値による
ロングワードの条件値です。
integer
OpenVMS 用法 符号なしロングワード データ型 符号なしロングワード アクセス 読み取りのみ 受け渡し方 ディスクリプタによる
CALL_USER 組込みプロシージャに対する最初のパラメータです。これは入力専用パラメータであり,変更してはなりません。stringin
OpenVMS 用法 文字列 データ型 文字列 アクセス 読み取りのみ 受け渡し方 ディスクリプタによる
CALL_USER 組込みプロシージャに対する2番目のパラメータです。これは入力専用パラメータであり,変更してはなりません。stringout
OpenVMS 用法 文字列 データ型 文字列 アクセス 読み取りのみ 受け渡し方 ディスクリプタによる
CALL_USER 組込みプロシージャへ返される文字列です。ユーザ・プログラムは,ランタイム・ライブラリが提供する文字列ルーチン (LIB$SGET1_DD など) によって割り当てられた動的文字列をこのディスクリプタに格納しなければなりません。DEC XTPU エディタは必要に応じてこの文字列を解放します。
ユーザ作成ルーチン USER は,DEC XTPU の CALL_USER 組込みプロシージャによって呼び出されます。CALL_USER 組込みプロシージャはこのルーチンに 3 つのパラメータを渡します。このうち 2 つのパラメータは,ユーザ・アプリケーションがその目的に沿って用途を決めます (たとえば,FORTRAN プログラムで計算のオペランドとして使用することができます)。アプリケーションは,ランタイム・ライブラリが提供する文字列ルーチンを使い,USER ルーチンの stringout パラメータに値を格納することによって,その値を CALL_USER 組込みプロシージャに返します。『DEC Text Processing Utility Reference Manual』には,BASIC による USER ルーチンのプログラム例が示されています。同マニュアルの CALL_USER 組込みプロシージャの説明を参照してください。
INTEGER FUNCTION XTPU$CALLUSER (x,y,z) IMPLICIT NONE INTEGER X CHARACTER*(*) Y STRUCTURE /dynamic/ Z INTEGER*2 length BYTE dtype BYTE class INTEGER ptr END STRUCTURE RECORD /dynamic/ Z CHARACTER*80 local_copy INTEGER rs,lclen INTEGER STR$COPY_DX local_copy = '<' // y // '>' lclen = LEN (Y) + 2 RS = STR$COPY_DX(Z,local_copy(1:lclen)) XTPU$CALLUSER = RS ENDこの FORTRAN プログラムを呼び出す XTPU プロシージャの例を次に示します。
PROCEDURE MY_CALL local status; status := CALL_USER (0,'ABCD'); MESSAGE('"' + status + '"'); ENDPROCEDURE
XTPU$CLEANUP ルーチンは,内部データ構造の後片付けをし,メモリを解放し,ターミナルを初期状態に戻します。これは DEC XTPU とのやりとりの最後に呼び出すルーチンです。
XTPU$CLEANUP flags
OpenVMS 用法 条件値 データ型 符号なしロングワード アクセス 書き込みのみ 受け渡し方 値による
ロングワードの条件値です。ユーティリティ・ルーチンはすべて,条件値を R0 に戻します。このルーチンから戻される可能性のある条件値については,"戻される条件値" にまとめられています。
flags
OpenVMS 用法 ロングワード・マスク データ型 符号なしロングワード アクセス 読み取りのみ 受け渡し方 参照による
クリーンアップ・オプションを定義するフラグ(あるいはマスク)です。 flags 引数は,クリーンアップ・オプションを定義するロングワード・ビット・マスクのアドレス,または32ビット・マスクのアドレスです。このマスクは,セットしたいフラグ・ビットの論理和(OR)です。XTPU$V... はビット・アイテムを示し, XTPU$M... はマスクを示します。クリーンアップ・オプションは 表 6-1 に示されているとおりです。
表 6-1 クリーンアップ・オプション シンボル1 機能 XTPU$M_CLOSE_KANJI_DIC かな漢字変換辞書をオープンしていた場合,かな漢字変換辞書をクローズします。 XTPU$M_CLOSE_KANJI_DIC かな漢字変換辞書をオープンしていた場合,かな漢字変換辞書をクローズします。 XTPU$M_CLOSE_SECTION 2 セクション・ファイルをクローズし,関連するメモリを解放します。バッファ,ウィンドウ,およびプロセスがすべて削除されます。キャッシュは整理され,初期化ファイルと初期化プロシージャの再実行のためのフラグがセットされます。セクションがクローズされ,かつオプション・ビットが /SECTION 修飾子の存在を示している場合,次に XTPU$INITIALIZE を呼び出すと,新しいセクション・ファイルが読み込まれます。 XTPU$M_DELETE_BUFFERS すべてのテキスト・バッファを削除します。この後もDEC XTPU を呼び出す場合には,これらのデータ構造を参照する変数はすべて,DELETE 組込みプロシージャの場合と同様にリセットされます。バッファが削除される場合には,そのバッファに含まれるレンジとマーカ,およびそのバッファを使用するサブプロセスもすべて削除されます。 XTPU$M_DELETE_CACHE 仮想ファイル・マネージャのデータ構造とキャッシュを削除します。この削除が要求された場合,バッファもすべて削除されます。キャッシュが削除されると,初期化ルーチンは次に呼び出されたときに仮想ファイル・マネージャを初期化し直さなければならなくなります。 XTPU$M_DELETE_CONTEXT DEC XTPU のコンテキスト全体を削除します。このオプションが指定されている場合には,初期化ファイルと初期化プロシージャの実行のためのオプションを除き,他のオプションもすべて指定されているものと解釈されます。 XTPU$M_DELETE_EXITH DEC XTPU の終了ハンドラを削除します。 XTPU$M_DELETE_JOURNAL ジャーナル・ファイルがオープンされている場合には,そのファイルをクローズし,削除します。 XTPU$M_DELETE_OTHERS 前もって割り当てられている種々のデータ構造を削除します。これらのデータ構造のために使用されていたメモリは,次に XTPU$INITIALIZE が呼び出されたときに再割り当てされます。 XTPU$M_DELETE_WINDOWS すべてのウィンドウを削除します。その後も DEC XTPU を呼び出す場合には,これらのデータ構造を参照する変数はすべて, DELETE 組込みプロシージャの場合と同様にリセットされます。 XTPU$M_EXECUTE_FILE 次に XTPU$EXECUTE_INIFILE が呼び出されたときに,コマンド・ファイルを再び実行します。異なるコマンド・ファイルを指定するつもりならば,このビットをセットしなければなりません。このオプションは, /COMMAND 修飾子の存在を示すのに XTPU$INITIALIZE に渡されるオプション・ビットと併用します。 XTPU$M_EXECUTE_PROC 次に
XTPU$EXECUTE_INIFILE が呼び出されたときに,XTPU$INIT_PROCEDURE を検索し,それを実行します。XTPU$M_KILL_PROCESSES セッションで生成されたすべてのサブプロセスを削除します。 XTPU$M_LAST_TIME このビットは,DEC XTPU に対する最後の呼び出しである場合にだけセットしなければなりません。このビットをセットした後に再度 DEC XTPU を呼び出した場合,結果は予測できません。 XTPU$M_PRUNE_CACHE バッファにページが割り当てられていない仮想ファイル・マネージャ・キャッシュをすべて解放します。このオプションは,セッションで作成されたあと,現在は不要になったキャッシュを解放します。 XTPU$M_RESET_TERMINAL ターミナルを,DEC XTPU を起動したときの状態にリセットします。ターミナル・メールボックスおよびすべてのウィンドウが削除されます。リセットされたターミナルは,次に XTPU$INITIALIZE を呼び出したときに初期化し直されます。
クリーンアップ・ルーチン XTPU$CLEANUP は,DEC XTPU とのやりとりの最後に呼び出すルーチンです。このルーチンは DEC XTPU に対し,内部データ構造をクリーンアップし,次の呼び出しに備えるよう指示します。上記のフラグをセットまたはクリアすることで,このルーチンによってリセットされるものを制御することができます。DEC XTPU の使用を終了する場合には,このルーチンを呼び出すことにより,メモリを解放し,ターミナルの設定を初期状態に戻しておかなければなりません。
XTPU$CLEANUP を呼び出したあと,すぐにユーザ・アプリケーションを終了する場合には,データ構造を削除しないでください。オペレーティング・システムがそれを自動的に削除します。データ構造の削除をオペレーティング・システムに任せることで,プログラムの性能が向上します。
注意
- 単純なインタフェースを使用する場合には,DEC XTPU は以下のフラグを自動的にセットします。
- XTPU$V_DELETE_BUFFERS
- XTPU$V_DELETE_EXITH
- XTPU$V_DELETE_JOURNAL
- XTPU$V_DELETE_WINDOWS
- XTPU$V_EXECUTE_FILE
- XTPU$V_EXECUTE_PROC
- XTPU$V_KILL_PROCESSES
- XTPU$V_PRUNE_CACHE
- XTPU$V_RESET_TERMINAL
- このルーチンがサクセス・ステータスを戻さなかった場合には,再度エディタを呼び出さないようにしなければなりません。
XTPU$_SUCCESS 正常終了したことを示します。
| 前へ | 次へ | 目次 | 索引 |