前へ | 次へ | 目次 | 索引 |
このルーチンはDEC XTPU の条件ハンドラです。DEC XTPU 条件ハンドラは, Put Message(SYS$PUTMSG) システム・サービスを呼び出し,そのシステム・サービスに XTPU$MESSAGE のアドレスを渡します。
XTPU$HANDLER signal_vector, mechanism_vector
OpenVMS 用法 条件値 データ型 符号なしロングワード アクセス 書き込みのみ 受け渡し方 値による
ロングワードの条件値です。
signal_vector
OpenVMS 用法 引数リスト データ型 符号なしロングワード アクセス 変更 受け渡し方 参照による
シグナル・ベクタです。条件ハンドラに渡されるシグナル・ベクタについての説明は,『OpenVMS System Services Reference Manual』を参照してください。mechanism_vector
OpenVMS 用法 引数リスト データ型 符号なしロングワード アクセス 読み取りのみ 受け渡し方 参照による
条件ハンドラに渡されるメカニズム・ベクタについての説明は,『OpenVMS System Services Reference Manual』を参照してください。
XTPU$MESSAGE ルーチンは実際のメッセージ出力を実行します。 Put Message (SYS$PUTMSG) システム・サービスはメッセージをフォーマッティングするだけです。このルーチンは, 第 6.1.2 項 で説明した変数からメッセージ・フラグの設定と機能名を入手します。これらの値を変更できるのは,DEC XTPU の SET 組込みプロシージャだけです。ハンドラが受け取った条件値に FATAL ステータスが含まれている場合や, DEC XTPU のファシリティ・コードが含まれていない場合には,条件が再通知されます。
条件が XTPU$_QUITTING,XTPU$_EXITING,またはXTPU$_RECOVERFAIL の場合には,条件ハンドラを設定したルーチンに対して,UNWIND 要求が与えられます。
メッセージを処理したあと,条件ハンドラは継続ステータスを戻します。 DEC XTPU エラー・メッセージ要求は,どのメッセージを出力しなければならないかを示す条件を通知することによって実行されます。シグナル・アレイに含まれる引数は,正しくフォーマッティングされたメッセージ引数ベクタです。このベクタには,関連するメッセージに対する複数の条件とフォーマッティングされた ASCII 出力(FAO) 引数が含まれていることがあります。たとえば,存在しないファイルをエデイタがオープンしようとした場合には,DEC XTPU のメッセージとして XTPU$_NOFILEACCESS が通知されます。このメッセージに対する FAO 引数は,ファイルの名前を示す文字列です。この条件にはエラー・ステータスが含まれており,そのあとに RMS のステータス・フィールド(STS)とステータス値フィールド (STV)が続きます。この条件には回復不可能な重大なエラーは含まれていないので,エラーを処理したあと,エディタは処理を継続できます。
エディタは XTPU$CONTROL から自動的に戻るわけではありません。したがって,XTPU$CONTROL ルーチンをコールする場合には,制御をエディタに戻すための方法を設定しておかなければなりません(たとえば,CALL_USER 組込みプロシージャを使用します)。また,ユーザ作成条件ハンドラを設定したものの,特定の条件に対してはDEC XTPU ハンドラをコールする場合には,プログラムの中で制御を戻したい場所に,省略時の条件ハンドラを設定しておかなければなりません。また,XTPU$SPECIFY_ASYN_ACTION および XTPU$TRIGGER_ASYNC_ACTION の非同期ルーチンを使って,XTPU$CONTROL を中断することもできます。
『OpenVMS Calling Standard』を参照してください。
このルーチンは編集を行えるようにDEC XTPU を初期化します。このルーチンはグローバル・データ構造を割り当て,グローバル変数を初期化し,仮想ファイル・マネージャやスクリーン・マネージャ,入出カサブシステムも含めて,エディタの主要コンポーネントのそれぞれに対して,適切なセットアップ・ルーチンをコールします。
XTPU$INITIALIZE callback [,user_arg]
OpenVMS 用法 条件値 データ型 符号なしロングワード アクセス 書き込みのみ 受け渡し方 値による
ロングワードの条件値です。ユーティリティ・ルーチンはほとんど,条件値を R0 に戻します。このルーチンから戻される可能性のある条件値は,"戻される条件値" にまとめられています。
callback
OpenVMS 用法 符号なしロングワード・ベクタ データ型 バウンド・プロシージャ値 アクセス 読み取りのみ 受け渡し方 ディスクリプタによる
コールバック・ルーチンです。callback 引数は,初期化パラメータを含むアイテム・リストのアドレスを戻すユーザ作成ルーチンまたはファイル入出力操作を処理するルーチンのアドレスです。このコールバック・ルーチンは XTPU$CLIPARSE またはユーザ作成のパース・ルーチンのどちらかを呼び出さなければなりません。コール可能なDEC XTPU は,初期化パラメータを指定するために使用できるアイテム・コードを定義しています。これらのコードを使用するときには,以下の基準に従ってください。
- XTPU$_OTHER_FILENAMES は,XTPU$_FILENAME の後で使わなければなりません。
- XTPU$_CHAIN または XTPU$_ENDLIST はリストの最後のアイテムでなければなりません。
図 6-3 は,アイテムディスクリプタの一般的な形式を示しています。アイテム・リストの作成方法についての詳しい説明は,使用する各言語のプログラマ・マニュアルを参照してください。
図 6-3 アイテムディスクリプタのフォーマット
アイテムディスクリプタのリターン・アドレスは,通常0です。
使用できるアイテム・コードは 表 6-2 に示すとおりです。
アイテム・コード | 説明 |
---|---|
XTPU$_OPTIONS | コマンド修飾子を使用可能にします。バッファ・アドレス・フィールドの14ビットは,いろいろな DEC XTPU コマンド修飾子に対応しています。バッファ・アドレス・フィールドの残りの18ビットは使用されません。 |
XTPU$_JOURNALFILE | /JOURNAL 修飾子に指定されている文字列を渡します。バッファ長フィールドは文字列の長さであり,バッファ・アドレス・フィールドは文字列のアドレスです。これは,GET_INFO (COMMAND_LINE,"JOURNAL_FILE") で使用できる文字列です。この文字列はヌル文字列でもかまいません。 |
XTPU$_SECTIONFILE | マッピングされるバイナリ初期化ファイル(セクション・ファイル)の名前を示す文字列を渡します。バッファ長フィールドは文字列の長さであり,バッファ・アドレス・フィールドは文字列のアドレスです。DEC XTPU の CLD ファイルには,この文字列の省略時の値が含まれています。 XTPU$V_SECTION ビットがセットされている場合には,このアイテム・コードを指定しなければなりません。 |
XTPU$_OUTPUTFILE | /OUTPUT 修飾子に指定されている文字列を渡します。バッファ長フィールドは文字列の長さであり,バッファ・アドレス・フィールドは文字列のアドレスを指定します。これは,GET_INFO (COMMAND_LINE,"OUTPUT_FILE") 組込みプロシージャから戻される文字列です。文字列はヌル文字列でもかまいません。 |
XTPU$_DISPLAYFILE | /DISPLAY 修飾子に指定されている文字列を渡します。バッファ長フィールドは文字列の長さであり,バッファ・アドレス・フィールドは文字列のアドレスを指定します。 |
XTPU$_COMMANDFILE | /COMMAND 修飾子に指定されている文字列を渡します。バッファ長フィールドは文字列の長さであり,バッファ・アドレス・フィールドは文字列のアドレスです。この文字列は,GET_INFO (COMMAND_LINE,"COMMAND_FILE") 組込みプロシージャから戻される文字列です。文字列はヌル文字列でもかまいません。 |
XTPU$_FILENAME | コマンド・ラインに指定されている入力ファイルの名前を示す文字列を渡します。バッファ長フィールドはこの文字列の長さを指定し,バッファ・アドレス・フィールドはアドレスを指定します。これは, GET_INFO (COMMAND_LINE,"FILE_NAME") 組込みプロシージャから戻される文字列です。このファイル名はヌル文字列でもかまいません。 |
XTPU$_OTHER_FILENAMES | コマンド・ラインに指定されている入力ファイルのうち一番目を除くものの名前を示す文字列を渡します。バッファ長フィールドはこの文字列の長さを指定し,バッファ・アドレス・フィールドはアドレスを指定します。 2番目以降の入力ファイルはそれぞれ XTPU$_OTHER_FILENAMES のエントリが必要です。これは,GET_INFO (COMMAND_LINE,"NEXT_FILE_NAME") 組込みプロシージャから戻される文字列です。 |
XTPU$_FILEIO | ファイル操作を処理するために使用されるルーチンのバウンド・プロシージャ値を渡します。自分で作成したファイル入出力ルーチンを使用することができ,また,ファイル操作を処理するためにDEC XTPU が提供するユーティリティ・ルーチンである XTPU$FILEIO をコールすることもできます。ファイル入出力ルーチンのアドレスは,バッファ・アドレス・フィールドに指定します。 |
XTPU$_CALLUSER | CALL_USER 組込みプロシージャがコールするユーザ作成ルーチンのバウンド・プロシージャ値を渡します。このルーチンのアドレスはバッファ・アドレス・フィールドに指定します。 |
XTPU$_INIT_FILE | /INITIALIZATION 修飾子に指定されている文字列を渡します。バッファ長フィールドは文字列の長さであり,バッファ・アドレス・フィールドは文字列のアドレスです。この文字列は,GET_INFO (COMMAND_LINE, "INIT_FILE") 組込みプロシージャから戻される文字列です。 |
XTPU$_KANJI_DICFILE | /KANJI_DICTIONARY 修飾子に指定されている文字列を渡します。バッファ長フィールドはこの文字列の長さを指定し,バッファ・アドレス・フィールドはアドレスを指定します。これは,GET_INFO (COMMAND_LINE, "KANJI_DICTIONARY_FILE") 組込みプロシージャから戻される文字列です。 |
XTPU$_START_LINE | その編集セッションの開始行番号を渡します。バッファ・アドレス・フィールドは /START_POSITION 修飾子で指定した2つの整数値の最初の値です。この値は GET_INFO (COMMAND_LINE,"LINE") 組込みプロシージャから戻される値です。通常,初期化プロシージャがこの情報を用いて,編集するバッファの先頭位置を設定します。バッファの先頭行は line 1 です。 |
XTPU$_START_CHAR | その編集セッションの開始カラム位置を渡します。バッファ・アドレス・フィールドは /START_POSITION 修飾子で指定した2つの整数値の2番目の値です。この値は GET_INFO (COMMAND_LINE,"CHARACTER") 組込みプロシージャから戻される値です。通常,初期化プロシージャがこの情報を用いて,編集するバッファの先頭位置をを設定します。バッファの先頭カラムは character 1 です。 |
XTPU$_WORKFILE | /WORK 修飾子で指定される文字列を渡します。バッファ長フィールドはこの文字列の長さを指定し,バッファ・アドレス・フィールドはアドレスを指定します。これは,GET_INFO (COMMAND_LINE, "WORK_FILE") 組込みプロシージャから戻される文字列です。 |
XTPU$_CHAIN | バッファ・アドレス・フィールドに次のアイテム・リストのアドレスを指定します。 |
XTPU$_ENDLIST | アイテム・リストの最後を示します。 |
XTPU$_CTRL_C_ROUTINE | Ctrl/C ASTを処理するためのルーチンのバウンド・プロシージャ値を渡します。DEC XTPU は Ctrl/C AST が発生すると,そのルーチンを呼び出します。そのルーチンが FALSE 値を返すと,DEC XTPU は Ctrl/C が処理されたものと仮定します。TRUE 値が返されると, DEC XTPU は現在実行しているDEC XTPU プロシージャの実行を強制終了させます。バッファ・アドレス・フィールドは,2つのロングワード・ベクタのアドレスを指定しています。最初のロングワードはルーチンのアドレスであり,2番目のロングワードはそのルーチンを呼ぶ前に R1 にDEC XTPU がロードする環境値です。 |
XTPU$_DEBUGFILE | /DEBUG 修飾子で指定された文字列を渡します。バッファ長フィールドは文字列の長さであり,バッファ・アドレス・フィールドは文字列のアドレスです。 |
表 6-3 は,XTPU$K_OPTIONS アイテム・コードによって与えられるビットと対応するマスクをまとめたものです。
マスク | フラグ | 機能 |
---|---|---|
XTPU$M_RECOVER 1 | XTPU$V_RECOVER 2 | 回復操作を実行します。 |
XTPU$M_JOURNAL | XTPU$V_JOURNAL | 編集セッションをジャーナルします。 |
XTPU$M_READ | XTPU$V_READ | メイン・バッファに対しては READ_ONLY 編集セッションとします。 |
XTPU$M_SECTION | XTPU$V_SECTION | 起動時にバイナリ初期化ファイル( DEC XTPU セクション・ファイル)にマッピングします。 |
XTPU$M_CREATE | XTPU$V_CREATE | 指定した入力ファイルが存在しない場合,入力ファイルを作成します。 |
XTPU$M_OUTPUT | XTPU$V_OUTPUT | セッションを終了するときに,変更された入力ファイルを書き出します。 |
XTPU$M_COMMAND | XTPU$V_COMMAND | 起動時にコマンド・ファイルを実行します。 |
XTPU$M_DISPLAY | XTPU$V_DISPLAY | スクリーンを使用する編集と表示のために,ターミナルを使用します。 |
XTPU$M_INIT | XTPU$V_INIT | イニシャライゼーション・ファイルがあります。 |
XTPU$M_COMMAND
_DFLTED |
XTPU$V_COMMAND
_DFLTED |
コマンド・ラインのユーザが指定した省略値の名前があるかどうかを指示します。これが TRUE である場合には,ユーザがコマンド・ファイルを指定しなかったことを意味します。このビットが FALSE にセットされていて,かつファイルが指定されていなかったら,XTPU$INITIALIZE は失敗します。 |
XTPU$M_WRITE | XTPU$V_WRITE | /WRITE がコマンド・ラインで指定されたかどうかを示します。 |
XTPU$M_MODIFY | XTPU$V_MODIFY | /MODIFY がコマンド・ラインで指定されたかどうかを示します。 |
XTPU$M_NOMODIFY | XTPU$V_NOMODIFY | /NOMODIFY がコマンド・ラインで指定されたかどうかを示します。 |
XTPU$M_NOKANJI_DIC | XTPU$V_NOKANJI_DIC | /NOKANJI_DICTIONARY がコマンド・ラインで指定されたかどうかを示します。 |
XTPU$M_SEC_LNM_MODE | XTPU$V_SEC_LNM_MODE | イメージが特権付きでインストールされ,このビットがセットされていると,セクション・ファイルを開けるときに信用のある論理名のみが使用されます。 |
フラグを作成するには,0という値から開始し,セットしたい各アイテムのマスク (XTPU$M…)に対して,OR 演算子を使用します。また,フラグを作成する別の方法として,32 ビットをビット・ベクタとして取り扱い,希望するアイテムに対応するビット(XTPU$V…)をセットする方法もあります。
OpenVMS 用法 | ユーザ引数 |
データ型 | 符号なしロングワード |
アクセス | 読み取りのみ |
受け渡し方 | 値による |
ユーザ引数。user_arg
引数はユーザによって書かれた初期化ルーチン INITIALIZEに渡されます。
user_arg 引数によって,アプリケーションは XTPU$INITIALIZE を通してユーザによって書かれた初期化ルーチンに情報を渡すことができます。 DEC XTPU はこのデータを解釈しません。
このルーチンは,条件ハンドラを設定したあとで最初にコールしなければならないルーチンです。このルーチンは,コールバック・ルーチンから受け取った情報に応じてエディタを初期化します。初期化ルーチンは,省略時の値として,すべてファイル指定をヌル文字列に設定し,すべてのオプションをオフの状態に設定します。しかし,ファイル入出力ルーチンやコールユーザ・ルーチンの省略時のアドレスは設定しません。
セクション・ファイルを指定しなかった場合には,エディタのソフトウェア機能は制限されます。
XTPU$_SUCCESS 初期化が正常終了したことを示します。 XTPU$_SYSERROR システム・サービスが正しく機能しなかったことを示します。 XTPU$_NONANSICRT 入力装置(SYS$INPUT)がサポートされないターミナルであることを示します。 XTPU$_RESTOREFAIL 復元操作でエラーが発生したことを示します。 XTPU$_NOFILEROUTINE ファイル操作を実行するためのルーチンが設定されていないことを示します。 XTPU$_OPENDIC かな漢字変換辞書がオープンできなかったことを示します。 XTPU$_INSVIRMEM エディタが初期化を実行するのに十分な仮想メモリが存在しないことを示します。 XTPU$_FAILURE 初期化を実行しているときに発生した他のすべてのエラーを示す汎用コードです。
前へ | 次へ | 目次 | 索引 |