前へ | 次へ | 目次 | 索引 |
この章では DEC XTPU の呼び出しについて説明します。特に DEC XTPU を呼び出すコマンドである EDIT/XTPU コマンドの使い方を詳しく説明しています。
5.1 概要
DEC コマンド言語(DCL)レベルで下記のコマンドを入力すると, DEC XTPU が呼び出され,編集インタフェースとして日本語 EVE が使用されます。
$ EDIT/XTPU |
この章は,以下のような節から構成されています。
DEC XTPU はデータをプロセスの仮想メモリ空間で扱います。もし,DEC XTPU のイメージ,データ構造,およびメモリ中に展開されたファイルに必要な空間が仮想アドレス空間を越えてしまった時には, DEC XTPU はデータの一部をワーク・ファイルに書き出し,開放されたメモリを必要な処理のために使用します。
ワーク・ファイルがいっぱいになると XTPU$_GETMEM または XTPU$_NOCACHE というエラー・メッセージが出力されます。不要なバッファを消去することでメモリを開放することもできますが,このようなエラーが発生したときには,処理を中断することが望まれます。再起動した後,必要なバッファのみを使用して処理を続けてください。ワーク・ファイルを十分な容量のあるディスクに置くことも可能です。ワーク・ファイルを置くディレクトリは,論理名 XTPU$WORK で指定してください。
プロセスに割り当てられる仮想アドレス空間を拡げることで,この回復不可能な内部エラーを避けることもできます。仮想アドレス空間は,以下の二つの要素によって決まります。
VIRTUALPAGECNT はプロセスにマップされる仮想ページの数を制御します。 VIRTUALPAGECNT に関する詳しい説明は,『 Compaq OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』を参照してください。
ページ・ファイル・クォータは,プロセスに割り当てられるシステム・ページ・ファイルの数を制御します。ページ・ファイル・クォータに関する詳しい説明は,『 Compaq OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』の /PGFLQUOTA 修飾子を参照してください。
仮想アドレス空間を拡げるためには,VIRTUALPAGECNT とページ・ファイル・クォータの両方を変える必要があるかもしれません。
5.3 DCL コマンド・プロシージャからDEC XTPU を呼び出す場合
DEC XTPU をコマンド・プロシージャから呼び出さなければならないのは,以下の 2 つの場合です。
最初に必要とする環境を設定し,次にDEC XTPU を呼び出す DCL コマンド・プロシージャを作成すれば,特殊な編集環境でDEC XTPU を実行することができます。この場合,SYS$INPUT に SYS$COMMAND と同じ値を代入しなければなりません。
$ DEFINE/USER SYS$INPUT SYS$COMMAND |
例 5-1 は最後に編集したファイルを"記憶"し,そのファイルを DEC XTPU に対する入力ファイルとして使用する DCL コマンド・プロシージャを示したものです。ファイル名を DCL のシンボル last_file_editid に記憶した後,この DCL コマンド・プロシージャは省略時のセクション・ファイル(別のセクション・ファイルを指定していないため)とユーザ作成コマンド・ファイルを使用して DEC XTPU を呼び出します。
例 5-1 DCL コマンド・プロシージャ filename.COM |
---|
$ IF P1 .NES. "" THEN last_file_edited == P1 $ WRITE SYS$OUTPUT "*** ''last_file_edited' ***" $ DEFINE/USER SYS$INPUT SYS$COMMAND $ EDIT/XTPU/COMMAND=DISK$:[USER]XTPUINI.TPU 'last_file_edited |
例 5-2 は FORTRAN プログラムのためのタブ・ストップを指定する環境を設定するコマンド・プロシージャです。
例 5-2 DCL コマンド・プロシージャ fortran_ts.COM |
---|
$ IF P1 .EQS. " THEN GOTO REGULAR_INVOKE $ last_file_edited == P1 $ FTN_TEST = F$FILE_ATTRIBUTES (last_file_edited,"RAT") $ IF FTN_TEST .NES. "FTN" THEN GOTO REGULAR_INVOKE $ FTN_INVOKE: $ DEFINE/USER SYS$INPUT SYS$COMMAND $ EDIT/XTPU/COMMAND=FTNTABS.TPU 'last_file_edited $ GOTO TPU_DONE $ REGULAR_INVOKE: $ DEFINE/USER SYS$INPUT SYS$COMMAND $ EDIT/XTPU 'last_file_edited $ TPU_DONE: |
一部の編集操作では編集コマンドを対話方式で入力するより,すべての編集コマンドをファイルに記憶し,ファイルからそれらのコマンドを読み取る方が便利なことがあります。また編集結果をスクリーンに表示せずに編集を実行したいこともあります。このような編集操作はバッチ・ジョブから実行することができ,また編集セッションの結果をスクリーンに表示したい場合には,このような編集操作を DCL コマンド・プロシージャから実行することもできます。実行中の編集操作がスクリーンに表示されない場合でも,コマンド・プロシージャが実行されている間,端末装置を自由に使用することはできません。
例 5-3 は下記の方法で DEC XTPU を呼び出すためのコマンド・ラインを含む DCL コマンド・プロシージャを示したものです。
コマンド・プロシージャのファイル名は invisible_tpu.COM です。
例 5-3 DCL プロシージャ invisible_tpu.COM |
---|
$ EDIT/XTPU/NOSECTION/COMMAND=gsr.TPU/NODISPLAY/NOKANJI_DICTIONARY 'p1' |
/NOSECTION | セクション・ファイルは使用しません (エディタを初期化するためにバイナリ・セクション・ファイルのプロシージャやキー定義は使用されません)。 |
/COMMAND=gsr.TPU | 実行したい編集操作はコマンド・ファイルに含まれています。 |
/NODISPLAY | スクリーン管理機能(ウィンドウ,カーソルなど)は認識されません。 |
/NOKANJI_DICTIONARY | かな漢字変換辞書を使用しません。 |
gsr.TPU というファイルは /COMMAND 修飾子に対するファイル仕様として使用されています。これは現在のバッファを探索し,文字列またはパターンを文字列と置き換えます。 例 5-4 は gsr.TPU というファイルを示したものです。
例 5-4 DEC XTPU コマンド・ファイル gsr.TPU |
---|
PROCEDURE global_search_replace (str_or_pat, str2) ! This procedure performs a search through the current ! buffer and replaces a string or a pattern with a new string LOCAL src_range, replacement_count; ! Return to caller if string not found ON_ERROR msg_text := FAO ('Completed !UL replacement!%S', replacement_count); MESSAGE (msg_text); RETURN; ENDON_ERROR; replacement_count := 0; LOOP src_range := SEARCH (str_or_pat, FORWARD); ! Search returns a range if found ERASE (src_range); ! Remove first string POSITION (END_OF (src_range));! Move to right place COPY_TEXT(str2); ! Replace with second string replacement_count := replacement_count + 1; ENDLOOP; ENDPROCEDURE ! global_search_replace ! Executable statements input_file:=GET_INFO (COMMAND_LINE,'file_name'); main_buffer:=CREATE_BUFFER ('main', input_file); POSITION (BEGINNING_OF (main_buffer)); global_search_replace ('xyz$_', 'user$_'); pat1:= '' & LINE_BEGIN & 't'; POSITION (BEGINNING_OF (main_buffer)); global_search_replace (pat1, 'T'); WRITE_FILE (main_buffer, 'newfile.dat'); QUIT; |
/NODISPLAY を EDIT/XTPU コマンド・ラインに指定した場合には,キーを定義することはできません。また編集操作を記憶しているファイルでウィンドウを作成したり操作することもできません。 /NOKANJI_DICTIONARY を EDIT/XTPU コマンド・ラインに指定しなかった時には,その編集操作に対して変換用個人辞書が割り当てられます。このため,バッチ・モードでかな漢字変換機能を使用しない時には, /NOKANJI_DICTIONARY を指定しておくことをお勧めします。 |
QUIT 組込みプロシージャまたは EXIT 組込みプロシージャを使用してエディタを終了する時には,変更したバッファを出力しなければなりません(この操作は 例 5-4
に示されています)。バッファの内容を変更したのにそのバッファを出力しないと,その変更された内容は失われてしまいます。
5.4 バッチ・ジョブからDEC XTPU を呼び出す場合
端末装置からではなく,バッチ・ジョブで編集操作を実行したい場合には,DCL の SUBMIT コマンドを使用してジョブをバッチ・キューに送ることができます。
たとえば,前の節と同じ編集をバッチ・モードで実行したい場合には,以下のコマンドを入力することができます。
$ SUBMIT invisible_tpu.COM/LOG=invisible_tpu.LOG/parameter=my_file.txt |
このジョブはシステムの省略時のバッチ・キューに入力され,結果はバッチ・ジョブが作成する LOG ファイルに出力されます。
バッチのようなコマンド・プロシージャに適用される制約条件は,バッチ・ジョブにも適用されます。/NODISPLAY をコマンド・ラインで使用するときと,編集操作を含むファイルで EXIT 組込みプロシージャまたは QUIT 組込みプロシージャを使用するときの注意事項について,上記の節を参照してください。
5.5 DEC XTPU コマンド・ラインの修飾子
EDIT/XTPU コマンドにはDEC XTPU あるいはDEC XTPU を使用して書かれたアプリケーションの動作を制御するために 14 個の修飾子があります。修飾子は次のように2種類に分類できます。
表 5-1 は EDIT/XTPU コマンドの修飾子と,それらの省略時の値を定義する部分,それらの修飾子を解釈する部分を示しています。
修飾子 | 省略時の値の定義 | 修飾子の扱い |
---|---|---|
/[NO]CODESET[= keyword] | DEC XTPU | DEC XTPU |
/[NO]COMMAND[= filespec] | DEC XTPU | DEC XTPU |
/[NO]CREATE | 両方 | アプリケーション |
/[NO]DEBUG[= filespec] | DEC XTPU | DEC XTPU |
/[NO]DISPLAY[= keyword] | DEC XTPU | DEC XTPU |
/[NO]INITIALIZATION[= filespec] | 両方 | アプリケーション |
/[NO]JOURNAL[= filespec] | 両方 | アプリケーション |
/[NO]KANJI_DICTIONARY[= filespec] | DEC XTPU | DEC XTPU |
/[NO]MODIFY | アプリケーション | アプリケーション |
/[NO]OUTPUT[= filespec] | 両方 | アプリケーション |
/[NO]READ_ONLY | 両方 | アプリケーション |
/[NO]RECOVER | DEC XTPU | DEC XTPU |
/[NO]SECTION[= filespec] | DEC XTPU | DEC XTPU |
/START_POSITION[=( line,column)] | DEC XTPU | アプリケーション |
/[NO]WRITE | 両方 | アプリケーション |
以降の節では,修飾子について詳しく説明します。以降の例の中では,修飾子は EDIT/XTPU コマンドのすぐ後,入力ファイル仕様の前に指定されていますが,修飾子は EDIT/XTPU コマンドの後なら,コマンド・ラインのどこに指定してもかまいません。以降の節は,インタフェースとして日本語 EVE 使用されていることを想定して書かれています。したがって,アプリケーションが扱いを指定できる修飾子も日本語 EVE をもとにして書かれています。日本語 EVE をベースにしないアプリケーションは,それらの修飾子を違った方法で使用できます。
5.5.1 /CODESET
/CODESET[=keyword] /CODESET=ISO_LATIN1 ( 省略時設定 ) |
DEC XTPU の起動時のシステム・コードセットを指定します。システム・コードセットは新しくバッファを作る時に使用されますので,組込みプロシージャでシステム・コードセットを変更しなければ,作成されるバッファのコードセットおよび出力コードセットの初期値は /CODESET 修飾子で指定した値になります。
/CODESET 修飾子のパラメータに指定できるキーワードは以下の通りです。
キーワード | コードセット |
---|---|
DECKANJI | DEC 漢字コードセット |
SDECKANJI | Super DEC 漢字コードセット |
ISO_LATIN1 | ISO Latin1 コードセット |
DEC_MCS | DEC MCSコードセット |
ASCII_JISKANA | ASCII (JIS ローマ字) + JIS カタカナコードセット |
SJIS | シフトJISコードセット |
/CODESET 修飾子を指定しなかった場合には,以下のような順序でシステム・コードセットが決められます。
論理名 LANG に定義できるものは以下の通りです。大文字小文字の区別はありません。論理名 LANG はプロセスのコードセットの定義を行う場合に使用します。システム全体のコードセットの定義を行う時には論理名 XPG$DEFAULT_LANG を使用してください。
値 | コードセット |
---|---|
ja_JP.deckanji | DEC 漢字コードセット |
ja_JP.sdeckanji | Super DEC 漢字コードセット |
en_US.ISO8859-1 | ISO Latin1 コードセット |
ja_JP.sjis | シフトJISコードセット |
論理名 XPG$DEFAULT_LANG に定義できるものは以下の通りです。大文字小文字の区別はありません。論理名XPG$DEFAULT_LANG はシステム全体のコードセットの定義を行う場合に使用します。プロセスごとにコードセットを定義するときには論理名 LANG を使用してください。
値 | コードセット |
---|---|
ja_JP.deckanji | DEC 漢字コードセット |
ja_JP.sdeckanji | Super DEC 漢字コードセット |
en_US.ISO8859-1 | ISO Latin1 コードセット |
ja_JP.sjis | シフトJISコードセット |
上記の論理名が定義されていない時にはコードセットの省略値が使用されます。省略値は論理名 XTPU$TEXT_LANGUAGE の値によってきまります。XTPU$TEXT_LANGUAGE が "JAPANESE" と定義されているときは DEC 漢字コードセットがシステム・コードセットになります。それ以外のときには ISO Latin1 コードセットがシステム・コードセットになります。
日本語 OpenVMS では以下のようにシステム論理名が定義されていますので, /CODESET 修飾子を指定しなかった場合には通常 DEC 漢字コードセットがシステム・コードセットになります。
コマンド・ラインで指定されたコードセットの名前を知るには以下のようにしてください。変数 X にはコードセットを示すキーワードが戻ります。
x := GET_INFO (COMMAND_LINE, "codeset"); |
次のコマンドを実行すると,DEC XTPU は起動時にシステム・コードセットを Super DEC 漢字コードセットに設定し,編集セッションのための入力ファイルとして letter.txt を使用します。
$ EDIT/XTPU/CODESET=sdeckanji letter.txt |
前へ | 次へ | 目次 | 索引 |