前へ | 次へ | 目次 | 索引 |
検索処理では,EVE の大文字と小文字の区別の規則に従います。検索時の大文字と小文字の区別について設定するには, SET FIND コマンドをEVE 初期化ファイルに入れます。たとえば,次の EDT コマンドと EVE コマンドはほとんど同じです。
EDT の場合:
SET SEARCH EXACT |
EVE の場合:
SET FIND CASE EXACT |
これらのコマンドは,全く同じわけではありません。EVE では,発音区別符号は検索文字列に入力されたとおりに常に正確に照合されるからです。
A.11.7 EDT マクロから DECTPU プロシージャへの変換
EDT マクロの代わりに DECTPU プロシージャを使用します。プロシージャを含むバッファを作成し, EXTEND コマンドを使用して EXTEND コマンドとともにプロシージャをコンパイルします。または,プロシージャを DECTPU コマンド・ファイルに入れ, /COMMAND 修飾子を使用して EVE を起動します。どちらの場合にも,コンパイルされたプロシージャをセクション・ファイルにセーブすることができます。
LEARN コマンドを使用して,対応する EVE コマンドを 1 つのキーに結合することもできます。その後,キー定義をセクション・ファイルにセーブできます。別の方法として,対応する EVE コマンドを初期化ファイルに入れることもできます。
次の例は,EDT スタートアップ・ファイルから DECTPU プロシージャに変換されたマクロを示しています。それぞれ,新しいコマンド WIDEN を作成します。このコマンドは,表示を132 桁に設定し,右マージンを 120 に設定します。
EDT マクロ:
FIND =WIDEN INSERT;SET SCREEN 132 INSERT;SET WRAP 120 FIND =MAIN. |
DECTPU プロシージャ:
PROCEDURE EVE_WIDEN; EVE_SET_WIDTH (132); EVE_SET_RIGHT_MARGIN (120); ENDPROCEDURE; |
マクロまたはプロシージャを実行するには,次のコマンドを使用します。
EDT の場合:
* DEFINE MACRO WIDEN * WIDEN |
EVE の場合:
Command: EXTEND EVE WIDEN Command: WIDEN |
A.11.8 EDT 非キーパッド文から DECTPU プロシージャへの変換
通常は,非キーパッド指定子を使用する EDT マクロおよびキー定義を DECTPU プロシージャまたは学習シーケンスに変換できます。次の例は,非キーパッド・モードを使用する EDT キー定義と,対応する DECTPU プロシージャおよびキー定義を示しています。どちらも,数値キーパッド上のコンマを現在の文字と前の文字を交換して入れ換えるためのキーとして定義します。 EDT 非キーパッド文の --C は,DECTPU プロシージャでは MOVE_HORIZONTAL (--1) に変換されます。
EDT の場合:
DEFINE KEY 19 AS "-C D1C +C UNDC." |
DECTPU の場合:
PROCEDURE USER_TRANSPOSE LOCAL SWAP_THIS; SWAP_THIS := ERASE_CHARACTER (1); MOVE_HORIZONTAL (-1); EVE$INSERT_TEXT (SWAP_THIS); RETURN (TRUE); ENDPROCEDURE; EVE$DEFINE_KEY ("USER_TRANSPOSE", COMMA, , EVE$X_USER_KEYS); |
EDTキーパッドを設定しても,EDT スタイルのタブ調整のためのキーは定義されません。ただし,WPS キーパッド Ruler キー (GOLD R) としてのキーを定義して,タブ・ストップを追加または削除するためにそのルーラを使用することによって,同じような効果を得ることができます。
たとえば,次のコマンドは F20 を WPS Ruler キーとして定義します。 WPS キーパッドを有効にする必要はありません。
Command: DEFINE KEY= F20 WPS GOLD-R |
この後にタブ・ストップを追加または削除するには,次の手順に従ってください。
手順 | 操作 |
---|---|
1 | Ruler キーとして定義したキーを押す。
現在のウィンドウの最下部 (ウィンドウのステータス・ラインのすぐ上) にルーラが表示される。カーソルはルーラ内に表示される。タブ・ストップは Tでマークされる。 |
2 | タブ・ストップを追加または削除したい位置にカーソルを置く。たとえば,ルーラ内の特定の桁まで移動するには左および右の矢印キーを押し,ルーラ内の次のタブ・ストップ( T)に移動するには, Tab キーを押す。 |
3 | タブ・ストップを設定したい位置で T または t を入力する。タブが既にそこにある場合は,そのタブ・ストップが削除される。新しいタブ・ストップは編集中のバッファにすぐに適用される。 |
4 | その他のタブ・ストップを追加または削除するには,手順 2 と 3 を繰り返す。 |
5 | ルーラを終了して編集を再開するには,Return キーまたは GOLD Return を押す。 |
WPS Ruler キーについての詳細は,ルーラ内でカーソルを移動するためのキーの一覧も含めて,『Guide to the Extensible Versatile Editor』の SET KEYPAD WPS コマンドの説明を参照してください。
この付録では,次の文字セットについて説明します。
Extended File Specifications のある環境で作業をしている場合,利用できる文字セットの詳細については『OpenVMS Extended File Specifications の手引き』を参照してください。 |
DEC 各国語文字セットは,256 文字からなる 8 ビット文字セットで,最初の 128 文字が ASCII 文字セットに対応します。それぞれの文字は,0 〜 255 の 10 進値を持っています。
B.1.1 ASCII 文字セット
付録 B.1.2 項 は ASCII 文字セット (0 〜 127 の 10 進値を持つ文字) を表しています。番号が付いたそれぞれの列の左側には, VTxxx シリーズ・ターミナルやワークステーションで入力するときの文字またはプリンタで出力される文字 (印刷不可能な文字を除く) が示されています。それぞれの列の右側には,バイトの 2 進値が示されており,値は 8 進数,10 進数,16 進数の 3 つの基数で表されます。
たとえば,大文字の A は,ASCII 規則では, 16 進数の 41 (ビット構成は 01000001) という値を持ち,これは 8 進数の 101,10 進数の 65 に相当します。 DCL は 16 進値を使用して文字列比較を行います (文字列比較については, 第 14 章
を参照してください)。
B.1.2 ASCII 文字セット,第 1 部
次の図は,DEC 各国語文字セットの前半部分を示しています。
B.1.3 ASCII 文字セット,第 2 部
次の図は,DEC 各国語文字セットの後半部分を表しています (10 進値の 128 〜 255 を持つ文字)。番号が付いたそれぞれの列の左側には, VT300 または VT200 シリーズ・ターミナルやプリンタに出力される文字が示されています (これらの文字は VT100 シリーズ・ターミナルでは表示できません)。
B.2 DCL 文字セット
表 B-1 は,DCL 文字セットの文字の一覧です。
シンボル | 名前 | 意味 |
---|---|---|
@ | アットマーク | コマンド・プロシージャ・ファイルの内容をコマンド入力ストリームに収める。 |
: | コロン | ファイル指定の中のデバイス名の区切り文字。ダブルコロン (::) はノード名区切り文字。コロンは修飾子区切り文字としても使用でき,修飾子名とその値とを分割する。 |
/ | スラッシュ | 修飾子の接頭辞。 |
+ | プラス記号 | パラメータのセパレータ。一部のコマンドでは,パラメータの連結子として働く。文字列連結演算子,単項プラス記号,数値式の中の補足演算子としても認識される。 |
, | コンマ | パラメータまたは引数リストのリスト要素のセパレータ。 |
- | ハイフン | 継続文字。文字列分割演算子,単項マイナス記号,数値式の中の減算演算子,およびディレクトリ検索ワイルドカード文字としても認識される。 |
( ) | 括弧 | 引数リストのリスト区切り文字。数値式の中で演算順序を示すときにも使用される。 |
[ ] | 大括弧 | ファイル指定の中のディレクトリ名の区切り文字。山括弧に等しい。 |
<> | 山括弧 | ファイル指定の中のディレクトリ名の区切り文字。大括弧に等しい。 |
? | 疑問符 | ヘルプ文字。 |
& | アンパサンド | 実行時置換演算子。これ以外の場合には,予備の特殊文字。 |
\ | バックスラッシュ | 予備の特殊文字。 |
= | 等号 | 修飾子値の区切り文字。修飾子名と引数とを分割する。等号 (=) は,シンボル定義での割り当て文としても利用される。 |
^ | サーカンフレックス | 予備の特殊文字。 |
# | 番号記号 | 予備の特殊文字。 |
* | アスタリスク | ファイル指定の中のワイルドカード文字。数値式の中の乗算演算子ならびにシンボル定義の中の短縮形区切り文字としても使用される。 |
' | 一重引用符 | 置換演算子。 |
. | ピリオド | ファイル指定の中のファイル・タイプとバージョン番号区切り文字。サブディレクトリ区切り文字としても使用される。 |
; | セミコロン | ファイル指定の中のバージョン番号区切り文字。 |
% | パーセント記号 | ファイル指定の中のワイルドカード文字。基数演算子としても使用される。 |
! | 感嘆符 | コメントを示す。 |
" | 二重引用符 | リテラル文字列区切り文字。 |
ここでは, 第 15 章 , 第 16 章 ,および 第 17 章 で説明した概念と手法について実際のコマンド・プロシージャを示しながら説明します。 1 つの節で 1 つのコマンド・プロシージャを解説します。コマンド・プロシージャごとに次の内容を示します。
このコマンド・プロシージャは,(これ以降の時間の) 絶対時刻をデルタ時間に変換し,現在の時刻とユーザが指定した時刻との差を示します。このプロシージャは,F$TIME と F$CVTIME レキシカル関数の使用方法と,割り当て文を使用して算術計算を行ったりシンボル値を連結する方法を示します。
$ ! Procedure to convert an absolute time to a delta time. $ ! The delta time is returned as the global symbol WAIT_TIME. $ ! P1 is the time to be converted. $ ! P2 is an optional parameter - SHOW - that causes the $ ! procedure to display WAIT_TIME before exiting $ ! $ ! Check for inquiry $ ! $ IF P1 .EQS. "?" .OR. P1 .EQS. "" THEN GOTO TELL (1) $ ! $ ! Verify the parameter: hours must be less than 24 $ ! minutes must be less than 60 $ ! time string must contain only hours $ ! and minutes $ ! $ ! Change error and message handling to $ ! use message at BADTIME $ ! $ ON WARNING THEN GOTO BADTIME (2) $ SAVE_MESSAGE = F$ENVIRONMENT("MESSAGE") $ SET MESSAGE/NOFACILITY/NOIDENTIFICATION/NOSEVERITY/NOTEXT $ TEMP = F$CVTIME(P1) $ ! $ ! Restore default error handling and message format $ ON ERROR THEN EXIT $ SET MESSAGE'SAVE_MESSAGE' $ ! $ IF F$LENGTH(P1) .NE. 5 .OR. - (3) F$LOCATE(":",P1) .NE. 2 - THEN GOTO BADTIME $ ! $ ! Get the current time $ ! $ TIME = F$TIME() (4) $ ! $ ! Extract the hour and minute fields from both the current time $ ! value (TIME) and the future time (P1) $ ! $ MINUTES = F$CVTIME(TIME,"ABSOLUTE","MINUTE") ! Current minutes (5) $ HOURS = F$CVTIME(TIME,"ABSOLUTE","HOUR") ! Current hours $ FUTURE_MINUTES = F$CVTIME(P1,"ABSOLUTE","MINUTE") ! Minutes in future time $ FUTURE_HOURS = F$CVTIME(P1,"ABSOLUTE","HOUR") ! Hours in future time $ ! $ ! $ ! Convert both time values to minutes $ ! Note the implicit string to integer conversion being performed $ ! $ CURRENT_TIME = HOURS*60 + MINUTES (6) $ FUTURE_TIME = FUTURE_HOURS*60 + FUTURE_MINUTES $ ! $ ! Compute difference between the future time and the current time $ ! (in minutes) $ ! $ ! $ MINUTES_TO_WAIT = FUTURE_TIME - CURRENT_TIME (7) $ ! $ ! If the result is less than 0 the specified time is assumed to be $ ! for the next day; more calculation is required. $ ! $ IF MINUTES_TO_WAIT .LT. 0 THEN - (8) MINUTES_TO_WAIT = 24*60 + FUTURE_TIME - CURRENT_TIME $ ! $ ! Start looping to determine the value in hours and minutes from $ ! the value expressed all in minutes $ ! $ HOURS_TO_WAIT = 0 $ HOURS_TO_WAIT_LOOP: (9) $ IF MINUTES_TO_WAIT .LT. 60 THEN GOTO FINISH_COMPUTE $ MINUTES_TO_WAIT = MINUTES_TO_WAIT - 60 $ HOURS_TO_WAIT = HOURS_TO_WAIT + 1 $ GOTO HOURS_TO_WAIT_LOOP $ FINISH_COMPUTE: $ ! $ ! Construct the delta time string in the proper format $ ! $ WAIT_TIME == F$STRING(HOURS_TO_WAIT)+ ":" + F$STRING(MINUTES_TO_WAIT)- (10) + ":00.00" $ ! $ ! Examine the second parameter $ ! $ IF P2 .EQS. "SHOW" THEN SHOW SYMBOL WAIT_TIME (11) $ ! $ ! Normal exit $ ! $ EXIT $ ! $ BADTIME: (12) $ ! Exit taken if first parameter is not formatted correctly $ ! EXIT command returns but does not display error status $ ! $ SET MESSAGE'SAVE_MESSAGE' $ WRITE SYS$OUTPUT "Invalid time value: ",P1,", format must be hh:mm" $ WRITE SYS$OUTPUT "Hours must be less than 24; minutes must be less than 60" $ EXIT %X10000000 $ ! $ ! $ TELL: (13) $ ! Display message and exit if user enters inquiry or enters $ ! an illegal parameter $ ! $ TYPE SYS$INPUT This procedure converts an absolute time value to a delta time value. The absolute time must be in the form hh:mm and must indicate a time in the future. On return, the global symbol WAIT_TIME contains the converted time value. If you enter the keyword SHOW as the second parameter, the procedure displays the resulting value in the output stream. To invoke this procedure, use the following syntax: @CONVERT hh:mm [SHOW] $ EXIT |
hh:mm |
IF コマンドは,(1) 入力された値の長さが 5 文字であるかどうか, (2) 3 番目の文字 (オフセット 2) がコロンであるかどうかをチェックする。 IF コマンドには論理 OR 演算子が含まれているため,いずれかの式が真の場合 (すなわち,値の長さが 5 文字でないか,3 番目の文字の位置にコロンがない場合) には,プロシージャはBADTIME ラベルに分岐する。
$ SHOW TIME 10-JUN-1996 10:38:26 $ @CONVERT 12:00 SHOW WAIT_TIME = "1:22:00.00" |
SHOW TIME コマンドは,現在の日時を表示します。 CONVERT.COM はパラメータ 12:00 と SHOW を指定して実行されます。プロシージャは,絶対時刻 12:00 をデルタ値に変換して,それをターミナルに表示します。
前へ | 次へ | 目次 | 索引 |