この章では,日本語EVEの拡張について説明します。
日本語EVEの XTPU コマンドを使えば,1行のコマンド・ラインに DEC XTPU ステートメントを入力できます。
XTPU コマンドを入力するには,XTPU コマンドに続けて, 実行したいDEC XTPUステートメントを入力します。たとえば,DEC XTPUの APPEND_LINEステートメント(現在の行を前の行の最後に続けるステートメント) を実行するには,次のコマンドを入力します。
Command : XTPU APPEND_LINE
XTPU コマンドについての詳細は,HELP XTPU とタイプして オンライン・ヘルプを参照してください。DEC XTPUステートメントとプロシージャの リストについては,『Guide to the DEC Text Processing Utility』, 『DEC Text Processing Utility Reference Manual』および 『DEC XTPU リファレンス・マニュアル』を参照してください。
日本語EVEでは,編集操作の必要条件を満足するために, 次に示す方法で標準エディタを変更できます。
編集コマンドを1つのキーに割り当てることにより,コマンドが簡単に入力できる。 たとえば,日本語EVEの ERASE WORD コマンドを[ Ctrl/D ]という キーシーケンスに割り当てることができる。
一連のコマンドまたはキーストロークを,学習シーケンスとして1つのキーに 割り当てることにより,簡単に再実行できる。たとえば,1つのキーを押すと, 新しい電話番号が標準的なメモ見出しに挿入されるような学習シーケンスを 作成することができる。
日本語EVEは強力でプログラミング可能なテキスト処理ユーティリティDEC XTPUを 基礎に構築されているため,DEC XTPUプロシージャを使用すれば,標準的なコマンド だけでなく,エディタをさらに拡張できる。DEC XTPU言語ステートメントを使用して, 標準的な日本語EVEでは使用できない機能を作成するためのプロシージャを開発できる。 たとえば,2つの文字を入れ替えるプロシージャを作成し, このプロシージャを1つのキーに割り当てることができる。
この節では,標準的な日本語EVEエディタを変更するために, スタートアップ・ファイルを使用する方法について説明します。 スタートアップ・ファイルは,編集環境の属性を設定するキー定義と編集コマンド, 標準的な日本語EVEエディタの編集機能を拡張するための DEC XTPUプロシージャも格納できます。
定義とプロシージャをスタートアップ・ファイルに格納すれば, 日本語EVE起動時に,作業で必要な編集環境を自動的に設定できます。 各編集セッションでそのたびに日本語EVEを変更する必要はありません。
日本語EVEには,次に示す3種類のスタートアップ・ファイルがあります。
セクション・ファイルには,
がバイナリ形式で格納されます。セクション・ファイルはバイナリ形式であるため, 編集環境を非常に迅速に設定できますが,バイナリ・ファイルを表示したり, 変更することはできません。したがって,各編集セッションで変更される可能性の ほとんどない編集機能を実現する場合は,セクション・ファイルを使用します。
たとえば,通常同じ方法で使用するキーはセクション・ファイルに定義します。
イニシャライゼーション・ファイルは,標準的な日本語EVEコマンドを格納した ASCIIファイルです。イニシャライゼーション・ファイルは簡単に表示したり, 変更したりできます。
イニシャライゼーション・ファイルは,日本語EVEを起動するときに /INITIALIZATION修飾子を使用して,または編集セッションの途中で @ コマンドを使用して実行できます。イニシャライゼーション・ファイルの 場合は,セクション・ファイルやコマンド・ファイルの場合より, 編集環境を設定するのに時間がかかります。イニシャライゼーション・ファイルには キー定義が登録されますが,学習シーケンスは登録できません。
コマンド・ファイルは,DEC XTPUステートメントとプロシージャを格納したDEC XTPUソース・ファイルです。コマンド・ファイルは2種類の方法で使用できます。まず, コマンド・ファイルは日本語EVEセクション・ファイルを作成するために使用できます。 また,日本語EVEが編集環境を作成するために実行するコマンド・ファイルとしても 使用できます。たとえば,バッファの表示方法やエディタのスタートアップ・モードを 制御するために,コマンド・ファイルを使用できます。コマンド・ファイルの実行速度 はセクション・ファイルより劣りますが,ASCIIファイルであるため,表示したり, 変更することができます。
コマンド・ファイルとイニシャライゼーション・ファイルは多くの同じ作業のために 使用できます。しかし,コマンド・ファイルはより速く実行でき, より高度な編集ツールを備えています。
以降の節では,各スタートアップ・ファイルについて詳しく説明します。
日本語EVEは,スタートアップのためにセクション・ファイルを必要とします。 省略時の設定では,日本語EVEはSYS$SHAREディレクトリに登録されている JEVE$SECTION_V3.XTPU$SECTIONというセクション・ファイルを使用します。 この省略時のセクション・ファイルは,編集キーを定義したり, 標準的な日本語EVEコマンドも定義したりします。
省略時のセクション・ファイルを使用するかわりに,標準的な日本語EVE機能の他に 独自のキー定義や学習シーケンス,編集機能などを格納したセクション・ファイル を作成することができます。セクション・ファイルは2種類の方法で作成できます。
SAVE EXTENDED EVE コマンドは,現在定義されているすべてのプロシージャ, キー定義,学習シーケンスを,指定したセクション・ファイルに保存します。
コンパイルしたプロシージャと,編集セッションで作成したキー定義, および学習シーケンスを保存するには,編集セッションを終了する前に, SAVE EXTENDED EVE コマンドを入力します。たとえば,次のコマンドは, MYEVE.XTPU$SECTIONというファイルにキー定義,プロシージャ, および学習シーケンスを保存します。
Command: SAVE EXTENDED EVE myeve
ファイルの指定に装置名やディレクトリを含まない場合は,セクション・ファイルは, 現在の省略時のディレクトリに保存されます。省略時のファイル・タイプは .XTPU$SECTIONです。
SAVE EXTENDED EVE コマンドを実行するたびに,同じファイルを指定すれば, 新しいキー定義,学習シーケンス,およびプロシージャを同じ セクション・ファイルに追加できます。
多くのカスタマイズ操作を実行したい場合には,キー定義とDEC XTPUプロシージャ を格納したコマンド・ファイルを作成する(ただし,コマンド・ファイルに 学習シーケンスを格納することはできない)。ファイルの最後にSAVEステートメントと QUITステートメントを登録し,例 2-1に示すように, ファイル・タイプが.XTPU$SECTIONであるセクション・ファイル名を割り当てる。 その後,/COMMAND修飾子とコマンド・ファイル名を指定して,日本語EVEを起動する。 日本語EVEはコマンド・ファイルに登録されたステートメントを実行し, SAVEステートメントに指定したセクション・ファイルにコンパイルしたプロシージャと キー定義を保存し,QUITステートメントを実行し,制御をDCLに戻す。この後, SAVEステートメントに指定した新しいセクション・ファイルを使用できる。
このようにして拡張した日本語EVEのバージョンを使用するには, 日本語EVEを起動するときに,/SECTION修飾子を指定しなければなりません。たとえば, WORKDISK:[USER]MYDEFS.XTPU$SECTIONというセクション・ファイルを使用して, RHYMES.DATファイルを編集するために日本語EVEを起動する場合は, 次のコマンドを入力します。
$ EDIT/XTPU/SECTION=workdisk:[user]mydefs.xtpu$section rhymes.dat
または,LOGIN.COMの中で論理名XTPU$SECTIONを再定義して, セクション・ファイルを指定できます。次の例はLOGIN.COMの中で, WORKDISK:[USER]MYDEFS.XTPU$SECTIONファイルを省略時の セクション・ファイルとして定義しています。
$ DEFINE XTPU$SECTION workdisk:[user]mydefs.xtpu$section
現在のセクション・ファイルの名前を表示するには,日本語EVEの SHOW SUMMARY コマンドを使用します。
日本語EVEは,コマンド・ファイルやイニシャライゼーション・ファイルを 実行する前に,セクション・ファイルを実行します。したがって, コマンド・ファイルとイニシャライゼーション・ファイルの定義は, セクション・ファイルの定義より優先します。編集環境の属性を設定する場合には, コマンド・ファイルまたはイニシャライゼーション・ファイルを使用してください。 日本語EVEは,スタートアップ時にこれらのコマンドを実行します。したがって, バッファの表示方法や編集モードは,ユーザの定義にしたがって調整されます。
会話的にキーを定義したり,編集セッションの属性を設定するかわりに, 日本語EVEコマンドとキー定義をイニシャライゼーション・ファイルに登録できます。 イニシャライゼーション・ファイルは @ コマンドを使用して, 日本語EVEを起動するときや編集セッションの途中で実行できます。 次の例を参照してください。
Command : @SETUP_INIT
イニシャライゼーション・ファイルの各コマンドは,それぞれ別の行に指定します。 各コマンドの内容を分かりやすく示すために,ファイルにコメントを追加できます。 ただし,コメントの前に感嘆符を指定し,コマンドと別の行に指定してください。 イニシャライゼーション・ファイルのファイル・タイプは.EVEです。
次の例はイニシャライゼーション・ファイルを示しています。
set tabs every 5
set left margin 15
set right margin 75
overstrike mode
define key=Ctrl/D erase word
define key=GOLD/W start of line
define key=KP5 fill paragraph
!
!Binds the EDT forward function (KP4 on
!EDT keypad) to GOLD F
!
define key=GOLD/F EDT KP4
イニシャライゼーション・ファイルを指定するには,以下の3つの方法があります。
次のコマンドは,MY_INITという名前のイニシャライゼーション・ファイルを 使用して,日本語EVEを起動します。
$ EDIT/XTPU/INIT=WORK1:[ALEXIS]MY_INIT
省略時の設定では,DEC XTPUは論理名がJEVE$INIT_V3である イニシャライゼーション・ファイルを使用します。この論理名をLOGIN.COMファイルに 定義した場合には,DEC XTPUは,日本語EVEを起動するときに, ユーザのイニシャライゼーション・ファイルを自動的に使用します。たとえば, 次のコマンドをLOGIN.COMファイルに登録できます。
$ DEFINE JEVE$INIT_V3 WORK1:[ALEXIS]MY_INIT.EVE
日本語EVEを起動すると,日本語EVEはまずセクション・ファイルを探し, 次にコマンド・ファイルを探し,最後にイニシャライゼーション・ファイルを探します。 イニシャライゼーション・ファイルはセクション・ファイルおよび コマンド・ファイルの後に実行されるため,イニシャライゼーション・ファイルの 定義はセクション・ファイルやコマンド・ファイルの定義より優先します。 この理由から,編集環境を定義するコマンドはコマンド・ファイルまたは イニシャライゼーション・ファイルに登録してください。 環境を定義するコマンドは次のとおりです。
CHANGE MODE,OVERSTRIKE MODE またはINSERT MODE
CHANGE DIRECTION,FORWARD またはREVERSE
コマンド・ファイルは,DEC XTPUプロシージャと実行可能なステートメントを 格納したソース・プログラムです。DEC XTPUプロシージャは関連する DEC XTPUステートメントの集まりであり,プロシージャ名を起動したときに 実行されます。ステートメントとプロシージャは, キーを押したときやコマンドを入力したときに, どのような操作が実行されるかを定義します。
日本語EVEコマンドを使用すると,実際にはコンパイルしたDEC XTPUプロシージャ が起動されます。たとえば,日本語EVEの SET KEYPAD EDT コマンドは, 日本語OpenVMSが提供する日本語EVEセクション・ファイルの EVE_SET_KEYPAD_EDTプロシージャを起動します。
日本語EVEは,セクション・ファイルを実行した後,コマンド・ファイルを実行します。 この理由から,コマンド・ファイルに定義したキー定義やプロシージャは, セクション・ファイルの定義より優先します。
コマンド・ファイルは2種類の方法で使用できます。まず,コマンド・ファイルは セクション・ファイルから独立した編集環境を作成でき,また,新しいセクション・ ファイルを作成するためにコマンド・ファイルを使用することも可能です。
省略時の編集環境を設定する場合には,必ずコマンド・ファイルを使用します。 これは,スタートアップ時に日本語EVEがコマンド・ファイル (またはイニシャライゼーション・ファイル)のステートメントを実行し, 新しい省略時の設定を有効にするからです。編集環境を設定するコマンドの リストについては,第2.3.2項を参照してください。 たとえば,1つのコマンド・ファイルを使用して,メモのマージンとタブを設定し, 別のコマンド・ファイルを使用して, 財務報告書を作成するのに適したタブを設定できます。
コマンド・ファイルを作成するには,日本語EVEを起動し,ファイル・タイプが .TPUであるファイル名(たとえば,MY_COMMAND.TPUなど)を指定します。 エディタを起動した後,DEC XTPUステートメントとプロシージャを入力してください。
例 2-1は,日本語EVEをEDTエディタに類似した機能 となるように変更するコマンド・ファイルを示しています。このファイルは, MY_SECTION.XTPU$SECTIONという名前の個人用セクション・ファイルを 作成するために使用します。
コマンド・ファイルを使用してセクション・ファイルを作成する場合には, ファイルの最後にSAVEステートメントとQUITステートメントを登録し, 例 2-1に示したように,セクション・ファイルの ファイルを指定します。コマンド・ファイルをセクション・ファイルに変換するには, /COMMAND修飾子を使用して,日本語EVEを起動します。次の例を参照してください。
$ EDIT/XTPU/COMMAND=MY_COMMANDS
日本語EVEは,ファイルに登録されたコマンドを実行し,SAVEステートメントに 指定したセクション・ファイルに,コンパイルしたプロシージャとキー定義を 保存します。QUITステートメントはエディタを終了し,制御をDCLに戻します。 これで新しいセクション・ファイルが作成されました。 このセクション・ファイルを論理名 XTPU$SECTIONに定義すると,日本語EVEの起動時に自動的に読み込まれます。
コマンド・ファイルからセクション・ファイルを作成する場合の利点は,コマンド・ ファイルを簡単に変更できるという点です。これは特に,DEC XTPUプロシージャを 追加したり,非常に多くのキー定義を追加するときなどに重要です。
編集環境の属性を設定し,標準的な日本語EVEエディタに機能を追加するために コマンド・ファイルを使用する場合には,やはり/COMMAND修飾子を使用して, 日本語EVEを起動します。次の例を参照してください。
$ EDIT/XTPU/COMMAND=DATA_SETUP
この場合も,日本語EVEはコマンド・ファイルのステートメントを実行しますが, SAVEステートメントは登録されていないため,コンパイルされたプロシージャと キー定義は保存されません。
コマンド修飾子を指定しなかった場合には,日本語EVEは,XTPU$COMMANDという 論理名によって指定されるファイルを検索します。 このファイルを検索できない場合には,DEC XTPUが現在のディレクトリから XTPU$COMMAND.TPUという名前のファイルを検索します。
!*********************************************************
!Command file making EVE more like EDT and implementing
!personal customizations
!*********************************************************
!Procedure to delete a line and close the gap left by the deletion 1
Procedure eve_zapline; 2
eve_end_of_line; 3
eve_erase_start_of_line; 4
eve_delete;
endprocedure; 5
!Procedure to move the cursor to the beginning of the next paragraph:
procedure eve_next_paragraph 6
local patl,
the_range;
patl := LINE_BEGIN + LINE_BEGIN + arb (1);
the_range := search_quietly (patl,FORWARD,EXACT);
if the_range <> 0
then
position (end_of (the_range));
return (TRUE); 7
else
return (FALSE);
endif;
endprocedure;
!Procedure to make EVE behave more like EDT
procedure eve_mimic_edit
eve_set_keypad_edt;
eve_set_cursor_bound;
eve_set_left_margin (10); 8
endprocedure;
!Procedure to transpose two characters
procedure eve_transpose
local whack;
whack := erase_character (1);
move_horizontal (1);
copy_text (whack);
return (TRUE);
endprocedure;
!Procedure to make both the screen width and the right margin narrow
procedure eve_narrow_screen
eve_set_width (80);
eve_set_right_margin (79);
endprocedure;
!Procedure to make both the screen width and the right margin wide
procedure eve_wide_screen
eve_set_width (132);
eve_set_right_margin (131);
endprocedure;
!Procedure to toggle screen width and right margin from the current setting
!to the other setting,i.e. change to wide if narrow,
change to narrow if wide
procedure eve_change_width 9
if get_info (SCREEN,"width") <> 80
then
eve_narrow_screen;
else
eve_wide_screen;
endif;
endprocedure;
procedure tpu$local_init 10
eve_mimic_edt; 11
eve$define_key ("eve_next_paragraph",CTRL_P_KEY,"Next_Para",
eve$x_user_keys); 12
eve$define_key ("eve_zapline",key_name ("o",shift_key),"Zap Line",
eve$x_user_keys); 13
eve$define_key ("eve_two_windows",F17,"Two Windows",eve$x_user_keys); 14
eve$define_key ("eve_other_window",CTRL_G_KEY,"Other Window",
eve$x_user_keys); 15
eve$define_key ("eve_get_file (''),key_name (KP6,SHIFT_KEY),"Get File",
eve$x_user_keys); 16
eve$define_key ("eve_transpose",key_name (F20,SHIFT_KEY),"Transpose",
eve$x_user_keys); 17
endprocedure;
tpu$local_init; 18
save ("WORK:[LINCOLN]MY_SECTION.XTPU$SECTION"); 19
quit; 20
例 2-1では,コマンド・ファイルの作成に関して, 次のことを示しています。
これらのDEC XTPUプロシージャの名前は,ユーザが作成するプロシージャの内部で 使用でき,また,DEC XTPUステートメントとして単独で実行することも可能です。 コマンド・ファイルにユーザ作成プロシージャと実行可能なDEC XTPUステートメントの 両方を格納する場合には,実行可能なステートメントの前にすべてのプロシージャを 格納してください。
コマンド・ファイルは,セクション・ファイルの後で実行されるためプロシージャは, セクション・ファイルに登録した同じ名前のコマンドより優先します。たとえば, EVE_ERASE_CHARACTERというプロシージャを指定した場合,ERASE CHARACTER コマンドは日本語OpenVMSが提供する日本語EVEコマンドでなく, ユーザが作成したプロシージャを実行します。
SET LEFT MARGIN 10
しかし,DEC XTPUの構文は次のとおりです。
eve_set_left_margin(10);
パラメータが整数ではなく,文字列の場合には, パラメータを引用符で囲まなければなりません。たとえば, EVE_SET SCROLL_MARGINSの場合には,"10%"というパラメータは文字列であるため, 引用符で囲まなければなりません。空パラメータを渡す場合には, eve_spawn(" ")などのように,空の1組の引用符を使用します。
このプロシージャには,日本語EVEを起動する時に定義し, 実行したいすべての実行可能ステートメント (他のプロシージャを呼び出すステートメントも含む)を含まなければなりません。 このプロシージャに指定した実行可能ステートメントはすべて, 日本語EVEを起動するときに実行されるため,このプロシージャ内のステートメントは, 日本語EVEエディタの省略時の設定になります。