# OpenVMS
ユーザーズ・マニュアル

前へ | 次へ | 目次 | 索引

## A.7.2 EVE エディタへの機能の追加

コマンド・ファイルを使用して編集環境の特性を設定し，標準のEVE エディタに機能を追加するには，再び /COMMAND 修飾子を付けて EVE を起動します。たとえば，次のようにします。

    $ EDIT/TPU/COMMAND=DATA_SETUP

EVE はコマンド・ファイル内の文をもう一度実行しますが， SAVE 文がないため，コンパイルされたプロシージャやキー定義はセーブされません。

コマンド修飾子を指定しない場合， EVE は論理名 TPU$COMMAND によって指定されたファイルを検索します。この論理名は LOGIN.COM ファイルで定義できます。このファイルが見つからない場合， DECTPU は現在のディレクトリにある TPU$COMMAND.TPU という名前のファイルを検索します。

### A.7.2.1 コマンド・ファイルの作成規則

コマンド・ファイルを作成する場合には，次の規則に注意してください。

- コマンド・ファイルの内容をわかりやすく示すために，コメントを使用する。コメントの先頭には感嘆符 (!) を指定する。 DECTPU が感嘆符を検出すると，その行の内容をすべて無視する。

- 各プロシージャは，"procedure" という単語から開始する。

- プロシージャの各 DECTPU 文は (;) で終了する。

- 各 EVE コマンドが，標準 EVE のセクション・ファイルの DECTPU プロシージャの名前 (SYS$SHARE:EVE$SECTION.TPU$SECTION) に対応するようにする。
  作成するプロシージャでこれらの DECTPU プロシージャの名前を使用でき，また， DECTPU 文として単独に実行することもできる。コマンド・ファイルにユーザ作成プロシージャと実行可能 DECTPU 文の両方が格納される場合には，実行可能文の前にすべてのプロシージャを登録する。

- 各プロシージャは "endprocedure" という単語で終了する。

- EVE のコマンドを実現するプロシージャを作成する場合には，プロシージャ名の最初の 4 文字として EVE_ を使用する。この規則に従うと，最初の 4 文字が EVE_ でないプロシージャ名は EVE コマンドになる。
  コマンド・ファイルはセクション・ファイルの後に実行されるため，プロシージャはセクション・ファイル内の同じ名前によってコマンドを上書きする。たとえば，プロシージャ名が EVE_ERASE_CHARACTER　の場合， ERASE CHARACTER コマンドは標準の EVE コマンドではなく，ユーザ作成プロシージャを実行する。

- パラメータを必要とする DECTPU プロシージャ名を使用する場合には，パラメータを括弧で囲む。EVE の形式は次のとおりである。

      SET LEFT MARGIN 10

  DECTPU の形式は次のとおりである。

      eve_set_left_margin(10);

- パラメータが整数ではなく，文字列の場合には，パラメータを引用符 (" ") で囲む。ヌル・パラメータを渡すときは，2 つの引用符を連続して使用する (" ")。

- プロシージャは起動する前にコンパイルする。その後，プロシージャは EVE コマンドとして起動でき，DECTPU 実行可能文として起動することもできる。

- TPU$LOCAL_INIT と呼ぶプロシージャをセクション・ファイルとして使用するコマンド・ファイルに追加する。このプロシージャには，EVE を起動するときに定義および実行するすべての実行可能文 (他のプロシージャを呼び出す文も含む) を登録しなければならない。このプロシージャ内の実行可能文は，EVE が起動されるときに実行されるため，このプロシージャ内の文は EVE エディタの省略時の設定になる。

- ファイルをセクション・ファイルとしてコンパイルする場合には， QUIT 文を最後の文としてコマンド・ファイルに追加する。QUIT は EVE 処理を終了し，制御を DCL プロンプトに戻す。

EVE コマンド・ファイル

次の例では，EVE を EDT エディタに類似するように変更するコマンド・ファイルを示しています。このファイルは，MY_SECTION.TPU$SECTION という名前の個人用セクション・ファイルを作成します。

    !*********************************************************************
    !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

    EVE_END_OF_LINE;

    EVE_ERASE_START_OF_LINE;      (2)

    EVE_DELETE;

    ENDPROCEDURE

    !Procedure to move the cursor to the beginning of the next paragraph:

    PROCEDURE EVE_NEXT_PARAGRAPH  (3)

    LOCAL   PAT1,
            THE_RANGE;

    PAT1 := line_begin + line_begin + ARB (1);
    THE_RANGE := SEARCH_QUIETLY (PAT1, forward, exact);

    IF THE_RANGE <> 0
    THEN
        POSITION (END_OF (THE_RANGE));
        RETURN (TRUE);            (4)
    ELSE
        RETURN (FALSE);
    ENDIF;

    ENDPROCEDURE

    !Procedure to make EVE behave more like EDT

    PROCEDURE EVE_MIMIC_EDT

    EVE_SET_KEYPAD_EDT;
    EVE_SET_CURSOR_BOUND;
    EVE_SET_LEFT_MARGIN(10);      (5)

    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, for example to
    !change to wide if narrow, change to narrow if wide

    PROCEDURE EVE_CHANGE_WIDTH    (6)

    IF GET_INFO (SCREEN, "width") <> 80
    THEN
        EVE_NARROW_SCREEN;
    ELSE
        EVE_WIDE_SCREEN;
    ENDIF;

    ENDPROCEDURE;

    PROCEDURE TPU$LOCAL_INIT      (7)

    EVE_MIMIC_EDT;                (8)

    EVE$DEFINE_KEY ("EVE_NEXT_PARAGRAPH", CTRL_P_KEY, "Next Para",
                    EVE$X_USER_KEYS); (9)

    EVE$DEFINE_KEY("EVE_ZAPLINE", KEY_NAME ("O", SHIFT_KEY), "Zap Line",
                   EVE$X_USER_KEYS);  (10)

    EVE$DEFINE_KEY ("EVE_TWO_WINDOWS", F17, "Two Windows", EVE$X_USER_KEYS);
                                                                  (11)

    EVE$DEFINE_KEY ("EVE_OTHER_WINDOW", CTRL_G_KEY, "Other Window",
                    EVE$X_USER_KEYS); (12)

    EVE$DEFINE_KEY ("EVE_GET_FILE('')", KEY_NAME (KP6, SHIFT_KEY), "Get File",
                    EVE$X_USER_KEYS); (13)

    EVE$DEFINE_KEY ("EVE_TRANSPOSE", KEY_NAME (F20, SHIFT_KEY), "Transpose",
                    EVE$X_USER_KEYS); (14)
    ENDPROCEDURE

    TPU$LOCAL_INIT;               (15)

    SAVE ("WORK:[LINCOLN]MY_SECTION.TPU$SECTION");   (16)

    QUIT;                         (17)

例を確認する場合には，次のことに注意してください。

1. この行の先頭には感嘆符 (!) が指定されている。したがって，DECTPU はこの行の内容をすべて無視する。

2. 各 EVE コマンドは，標準 EVE のセクション・ファイル内の DECTPU プロシージャの名前 (SYS$SHARE:EVE$SECTION.TPU$SECTION) に対応する。
   これらの DECTPU プロシージャの名前は，作成するプロシージャの内部で使用でき，また，DECTPU 文として単独で実行することもできる。コマンド・ファイルにユーザ作成プロシージャと実行可能 DECTPU 文の両方が格納される場合には，実行可能文の前にすべてのプロシージャを登録する。

3. このコマンドは EVE プロシージャ EVE_NEXT_PARAGRAPH を呼び出す。セクション・ファイルをコンパイルした後，新しい EVE コマンド NEXT PARAGRAPH を使用できる。

4. 繰り返しカウントを指定して (単独で指定するか，または学習シーケンスの一部として指定する) EVE コマンドを使用可能にするには，コマンドが正常終了したときに TRUE を戻されなければならない。

5. EVE コマンド SET LEFT MARGIN は，左マージンを設定する位置を指定するパラメータを必要とする。この例では，左マージンは 10 に設定される。

6. EVE_CHANGE_WIDTH という名前のプロシージャは，EVE コマンド CHANGE WIDTH として起動することができる。プロシージャ名は DECTPU 実行可能文 EVE_CHANGE_WIDTH として起動することもできる。

7. TPU$LOCAL_INIT というプロシージャは，セクション・ファイルとして使用される。

8. この DECTPU 文はプロシージャ EVE_MIMIC_EDT を起動する。このプロシージャには，EVE 設定を変更する DECTPU 文が含まれている。サンプル・コマンド・ファイルをコンパイルすると，そのファイルは個人用セクション・ファイルにセーブされ，そのセクション・ファイルを作用して EVE を起動する。この操作を実行すると，キーパッド設定，カーソル・スタイル，左マージンは，プロシージャ EVE_MIMIC_EDT によって自動的に設定される。その結果，EVE はスタートアップ時に EDT と同様の動作をする。

9. この DECTPU 文は，既定の EVE ルーチン EVE$DEFINE_KEY を使用して，キー・シーケンス Ctrl/P に対してユーザ作成プロシージャ EVE_NEXT_PARAGRAPH を定義する。EVE$DEFINE_KEY ルーチンにより，キーに結合されたプログラムにエラー・ハンドラが割り当てられる。 DECTPU 組み込みルーチンである DEFINE_KEY はこの操作を実行しない。
   EVE$DEFINE_KEY に対するパラメータとして，4 つのパラメータがある (このルーチンは，DECTPU 組み込みルーチンの DEFINE_KEY と同じパラメータを使用する)。最初のパラメータは，キーに結合される EVE プロシージャまたはコマンドを指定する。 2 番目のパラメータは，コマンドを結合しなければならないキーを指定する。 3 番目のパラメータは，EVE がヘルプ・キーパッドの図でキーに対して使用するラベルを指定する。4 番目のパラメータは，キー定義をセーブしなければならないキーマップ・リストを指定する EVE 変数である。特殊なアプリケーションを実現している上級ユーザでない限り， 4 番目のパラメータに対しては，変数名 EVE$X_USER_KEYS を使用する。

10. この DECTPU 文はキー・シーケンス GOLD O に対して，プロシージャ EVE_ZAPLINE を定義する。この行は，GOLD キーと英字キーで構成されるシーケンスを定義するとき使用される DECTPU 形式を示している。 "shift_key" を使用すると，定義で大文字と小文字が区別されなくなる。したがって，o と O の両方が定義される。

11. この文は，F17 キーに対して EVE コマンド TWO WINDOWS を定義する。

12. この文は，キー・シーケンス Ctrl/G に対して EVE コマンド OTHER WINDOW を定義する。

13. この文は，キー・シーケンス GOLD KP6 に対して EVE コマンド GET FILE を定義する。このキーパッドの割り当ては，GOLD KP6 キーの以前の定義より優先する。 EVE_MIMIC_EDT プロシージャは，キーパッドを EDT に設定し， EDT キーパッドは GOLD KP6 キー・シーケンスを INSERT HERE コマンドに結合する。しかし，この DECTPU 文はキー結合を GET FILE コマンドに変更する。 2 つの一重引用符は空の引数をプロシージャに渡す。

14. この文は，キー・シーケンス GOLD F20 に対して，プロシージャ EVE_TRANSPOSEを定義する。

15. この文はプロシージャ TPU$LOCAL_INIT を呼び出す。このプロシージャが実行され，EVE の新しい省略時の設定が作成される。

16. 新しいセクション・ファイルを作成するために，SAVE 文が含まれている。セクション・ファイルのデバイス，ディレクトリ，ファイル名は，括弧と引用符で囲んで指定する。

17. QUIT コマンドは EVE 処理を終了し，制御を DCL プロンプトに戻す。

# A.8 初期化ファイルの作成

キーの定義や編集セッションの特性の設定を会話形式で行う代わりに， 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

初期化ファイルは，/INITIALIZATION 修飾子を使って指定できます。初期化ファイルは LOGIN.COM ファイル内で EVE$INIT として定義されているか， SYS$LOGIN ディレクトリ内で EVE$INIT.EXE という名前で定義されています。次のコマンドは，MY_INIT という名前の初期化ファイルを使って EVE を起動します。

    $ EDIT/TPU/INIT=WORK1:[ALEXIS]MY_INIT

省略時の設定では，DECTPU は論理名 EVE$INIT の初期化ファイルを使用します。この論理名をユーザの LOGIN.COM ファイルに定義すると， EVE の起動時に DECTPU はユーザの初期化ファイルを自動的に使用します。たとえば，次のコマンドを LOGIN.COM ファイルに追加したとします。

    $ DEFINE EVE$INIT WORK1:[ALEXIS]MY_INIT.EVE

EVE が起動されるとき，EVE は最初にセクション・ファイルを探し，次にコマンド・ファイルを探し，最後に初期化ファイルを探します。初期化ファイルはセクション・ファイルおよびコマンド・ファイルの後に実行されるため，初期化ファイル内の定義内容はセクション・ファイルやコマンド・ファイルの内容よりも優先されます。したがって，編集環境を定義するコマンドは，コマンド・ファイルか初期化ファイルに入れるようにしてください。

## A.8.1 環境を定義するコマンド

環境を定義するコマンドには次のようなものがあります。

- SET CURSOR BOUND または FREE

- SET FIND WHITESPACE または NOWHITESPACE

- SET GOLD KEY

- SET KEYPAD

- SET LEFT MARGIN

- SET RIGHT MARGIN

- SET SCROLL MARGINS

- SET TABS AT または EVERY

- SET TABS SPACES, MOVEMENT, または INSERT

- SET TABS VISIBLE または INVISIBLE

- SET WIDTH

- SET WILDCARD VMS または ULTRIX

- SET WRAP または NOWRAP

- 省略時のバッファ・モード: CHANGE MODE, OVERSTRIKE MODE, または INSERT MODE

- 省略時のバッファ方向: CHANGE DIRECTION, FORWARD, または REVERSE

# A.9 スタートアップ・ファイルへのカスタマイズ内容のセーブ

キー定義，学習シーケンス，DECTPU プロシージャをスタートアップ・ファイルにセーブできます。スタートアップ・ファイルを使用すると，EVE に対して行ったすべての変更内容をセーブでき，編集セッションごとに再び変更し直す必要がなくなります。

EVE には 3 種類のスタートアップ・ファイルがあります。

- セクション・ファイル

- コマンド・ファイル

- 初期化ファイル

セクション・ファイルとコマンド・ファイルは， EVE エディタから会話形式でカスタマイズできます。初期化ファイルは別に作成します。

カスタマイズ内容をセクション・ファイルまたはコマンド・ファイルにセーブする場合，エディタを終了または取り消し終了するときに SAVE ATTRIBUTES コマンドまたはSAVE EXTENDED EVE コマンドを使用します。

## A.9.1 属性をセーブするためのEVE コマンド

次の一覧は，属性をセーブするためのコマンドです。

- SAVE ATTRIBUTES

  属性設定やユーザのメニュー定義をセクション・ファイルまたはコマンド・ファイルにセーブする。 EVE のプロンプトに対する応答または他のEVE コマンドによって行われた設定によって，どちらのファイルにセーブするかが決まる。セクション・ファイルにセーブする場合， SAVE EXTENDED EVE コマンドと同じコマンド・ファイルにセーブする場合，特別にマークされた DECTPU 文ブロックが属性設定とメニュー定義について作成される。この文ブロックを使用してコマンド・ファイルが作成されるか，既存のコマンド・ファイルが更新される。

- SAVE SYSTEM ATTRIBUTES

  EVE の省略時の属性設定をセクション・ファイルまたはコマンド・ファイルにセーブする。セクション・ファイルやコマンド・ファイルを EVE の標準設定および標準メニュー定義に戻したい場合に役立つ。

- SAVE EXTENDED EVE

  セクション・ファイルを作成し，そのファイルの中に属性設定，キー定義，メニュー定義，コンパイルされたプロシージャ，および DECTUP 文で設定されたグローバル変数などのその他の拡張をセーブする。コマンド行にセクション・ファイルを指定しないと，ファイル名を入力するよう求めるプロンプトが表示されるか，省略時のセクション・ファイルが使用される (省略時のファイルを設定した場合)。

- SET DEFAULT COMMAND FILE

  属性をセーブするコマンド・ファイルを決定する。スタートアップ時に実行されるコマンド・ファイルを決定するものではない。

- SET DEFAULT SECTION FILE

  属性をセーブするセクション・ファイルを決定する。スタートアップ時に実行されるセクション・ファイルを決定するものではない。

- SET EXIT ATTRIBUTE CHECK

  属性の変更後に終了または取り消し終了する場合，変更内容をセーブするかどうかが尋ねられる。省略時の設定である。

- SET NODEFAULT COMMAND FILE

  属性をセーブするとき，省略時のコマンド・ファイルは現在のディレクトリ内にある TPU$COMMAND.TPU か，またはスタートアップ時に実行されたコマンド・ファイルになる。省略時の設定である。

- SET NODEFAULT SECTION FILE

  属性をセーブするとき，作成するセクション・ファイルの名前が尋ねられる (セクション・ファイルを求めるプロンプトなしが設定されていない場合)。省略時の設定である。

- SET NOEXIT ATTRIBUTE CHECK

  属性のチェックを行わない主に終了や取り消し終了の処理にかかる時間が短くなり，処理が単純になる。このコマンドを実行した編集セッションには適用されない。この設定をセーブしたセクション・ファイルまたはコマンド・ファイルを使用する編集セッションにだけ適用される。

- SET NOSECTION FILE PROMPTING

  属性をセーブするとき，セクション・ファイルのプロンプトを表示しない。主に省略時のセクション・ファイルやコマンド・ファイルに属性をセーブするときの終了処理にかかる時間が短くなり，処理が単純になる。

- SET SECTION FILE PROMPTING

  属性をセーブするとき，EVE はセクション・ファイルの名前を求めるプロンプトを表示する。省略時の設定である。

属性を変更した後，セーブしなかった場合には，EVE は終了時に，変更された属性をセーブするかどうか質問します。

次の例は，EVE から終了するときにどのように属性をセーブするかを示しています。

    Command: SET CURSOR BOUND
    Command: MOVING_TEXT
    Command: SET TABS VISIBLE
               .
               .
               .
    Command: EXIT
    Attributes were changed.  Save them? [YES]

変更内容をセーブする場合は，Return キーを押します。終了前に SAVE ATTRIBUTES コマンドが実行されます。変更内容をセーブしたくない場合は，No と入力して Return を押します。そのまま終了処理が行われます。

終了処理にかかる時間を短くして処理を単純にするために，このプロンプトを表示しない場合は， SET NOEXIT ATTRIBUTE CHECK コマンドを使用します。ただし，このコマンドは現在の編集セッションには適用されません。終了時のチェックはそれ自体がグローバル設定であり，セクション・ファイルまたはコマンド・ファイルにセーブできるものだからです。設定をセーブした後，そのセクション・ファイルまたはコマンド・ファイルを使用する以降の編集セッションにその設定が適用されます。

その他のグローバルな属性(スクロール・マージンやワイルドカードの種類など) および個々のバッファの属性 (マージンやタブ・ストップなど) は，セクション・ファイルやコマンド・ファイルにはセーブされません。通常，これらの設定に対しては初期化ファイルを使用します。

前へ | 次へ | 目次 | 索引