|
コマンド列を別の任意の文字列で置き換えることができます。この文字列を,シンボルといいます。つまり,シンボルとはコマンド列の全体または一部につける別名と言えます。 |
DCL コマンドの中には,多くのパラメータや修飾子を必要とするために,コマンド列が非常に長くなるものがあります。そこで,シンボルを使用して長いコマンド列を別の文字列でおきかえて短くしたり,コマンド列内で変数として使用したりします。
いったんシンボルを定義すると,その後はシンボルを DCL コマンドと同様に使用することができます。定義したシンボルは,ログアウトするまで有効です。
シンボルを定義するには次のようにします。
$ シンボル =[=] "DCL コマンド列の全体または一部"
(1) (2)
|
コマンド列を置き換える文字列。
シンボルは 1 〜 255 文字の英数字,ドル記号 ($),アンダーライン (_) の文字列を使用します。先頭は英字,$,_ のいずれかにしなければいけません。(数字は使用できません。)
置き換えるコマンド列。
実際にコマンド列を入力するように指定します。
シンボル DSD に,ディレクトリ内のファイルをサイズと作成日時の情報も含めて一覧表示するコマンド列全体を割当てます。
$ DSD == "DIR/SIZE/DATE"
|
DCL コマンドのかわりに DSD と入力するとサイズと作成日時情報も含めたファイルの一覧が表示されます。
$ DSD
Directory DKA0:[YAMADA]
LOGIN.COM;1 1 9-MAY-2001 15:59:46.53
MAIL.MAI;1 27 22-JAN-2002 10:41:56.21
Total of 2 files, 28 blocks.
$
|
コマンドの短縮形としてのシンボルを使う際には,必要に応じて追加の修飾子やパラメータを指定することもできます。
次の例では,/OWNER 修飾子を追加し,/SIZE 修飾子のかわりに /SIZE=ALL 修飾子を指定しています。またパラメータとして *.COM を指定しています。
$ DSD/OWNER/SIZE=ALL *.COM
Directory DKA0:[YAMADA]
LOGIN.COM;1 1/9 9-MAY-2001 15:59:46.53 [VMS,YAMADA]
Total of 1 file, 1/9 blocks.
$
|
また,あるコマンドに対し,特定のパラメータを頻繁に指定する場合,そのパラメータもシンボルに含めてしまうことができます。次に例を示します。
$ DIRCOM == "DIR/SIZE/DATE *.COM"
$ DIRCOM
Directory DKA0:[YAMADA]
LOGIN.COM;1 1 9-MAY-2001 15:59:46.53
Total of 1 file, 1 blocks.
$
|
シンボルを確認するには,SHOW SYMBOL コマンドを使用します。
$ SHOW SYMBOL シンボル
|
すべてのシンボルを表示する時は,シンボル名のかわりに /ALL 修飾子を使います。
$ SHOW SYMBOL/ALL
|
シンボルを削除するには次のようにします。
$ DELETE/SYMBOL シンボル
|
すべてのシンボルを削除する時は,シンボルのかわりに /ALL 修飾子を使います。また,シンボルはログアウトすると削除されます。
$ DELETE/SYMBOL/ALL
|
DCL コマンドと同じように,シンボルも省略形を使うことができます。シンボルを定義するときに,シンボル名の中にアスタリスク (*) 文字を入れると,* 以後の文字は省略可能になります。
省略形を指定したシンボル TODAY を定義します。
$ TOD*AY = "SHOW TIME"
|
省略形を使ってシンボル名を入力します。
$ TODAY
14-FEB-2002 17:54:49
$ TODA
14-FEB-2002 17:54:54
$ TOD
14-FEB-2002 17:54:57
|
TO は省略形として指定していないため,エラーとなります。
$ TO
%DCL-W-IVVERB, unrecognized command verb - check validity and spelling
\TO\
$
|
シンボルには有効範囲の違いで,ローカル・シンボルとグローバル・シンボルの 2 種類があります。一般に,ローカル・シンボルは,計算結果を一時的に格納しておくための変数に使います。グローバル・シンボルは,ユーザの環境を設定するために使います。
イコール記号 1 つ (=) で定義したシンボルのことをローカル・シンボルと言い,イコール記号 2 つ (==) で定義したシンボルのことをグローバル・シンボルと言います。
同じ名前のローカル・シンボルとグローバル・シンボルを定義した場合は,ローカル・シンボルが優先されます。ローカル・シンボルを削除するとグローバル・シンボルを参照できるようになります。
グローバル・シンボルを定義するには,次のようにします。
$ シンボル == "DCL コマンド列の全体または一部"
|
グローバル・シンボルを参照する -- SHOW SYMBOL/GLOBAL
グローバル・シンボルを参照するには,次のようにします。
$ SHOW SYMBOL/GLOBAL シンボル
|
すべてのグローバル・シンボルを表示する時は,シンボル名のかわりに /ALL 修飾子を使います。
$ SHOW SYMBOL/GLOBAL/ALL
|
グローバル・シンボルを削除する -- DELELTE/SYMBOL/GLOBAL
グローバル・シンボルを削除するには,次のようにします。
$ DELETE/SYMBOL/GLOBAL シンボル
|
すべてのグローバル・シンボルを削除する時は,シンボルのかわりに /ALL 修飾子を使います。
$ DELETE/SYMBOL/GLOBAL/ALL
|
コマンド・プロシージャとは DCL コマンドと使用されるデータ行を 1 つのテキスト・ファイルにまとめたものです。( 詳しくは,「コマンド・プロシージャを使用する」 をご覧ください。)
通常,コマンド・プロシージャの中では,ローカル・シンボルを使います。これはコマンド・プロシージャ内で定義されたローカル・シンボルの有効範囲が,そのコマンド・プロシージャの中だけに限られるからです。コマンド・プロシージャの中で定義されたローカル・シンボルは,コマンド・プロシージャの実行を終了すると消去されます。
一方グローバル・シンボルは,DCL コマンド・ライン上でもコマンド・プロシージャの中でも定義,参照,変更,削除をすることができます。そのため,何らかの値を DCL プロンプト・レベルに返す場合や,ユーザの環境を設定する場合に使うことができます。
たとえば,ログイン・コマンド・プロシージャの中で,ユーザがよく使うコマンドの短縮形を定義する場合には,必ずグローバル・シンボルを使う必要があります。次に例を示します。
$ cd == "set default"
$ pwd == "show default"
$ who == "show user"
$ less == "type /page=save"
|
ログイン・コマンド・プロシージャ LOGIN.COM は,ログイン時に一連の DCL コマンドを自動的に実行するためのものです。( 詳しくは,「コマンド・プロシージャを使用する」 をご覧ください。)
シンボルは,計算結果を一時的に格納しておくための変数として使うことができます。この機能は主にコマンド・プロシージャの中で使われますが,DCL プロンプト上でも使うことができます。次に例を示します。
$ x = (1 + 2) * 3
$ show symbol x
X = 9 Hex = 00000009 Octal = 00000000011
$ surname = "山田"
$ show symbol surname
SURNAME = "山田"
$
|
最初の例のようにシンボルに計算結果を代入すると,シンボルは数値変数になります。2 番目の例のように文字列を代入すると,シンボルは文字列変数になります。シンボルがどちらの型になるかは代入時に決定されるので,あらかじめ定義しておく必要はありません。
いくつかのシンボルは特別な目的のために使用されます。ユーザは必要に応じて,それらのシンボルを参照または上書きすることができます。
直前に実行したコマンドやアプリケーションが,正常に実行されたかどうかを示します。正常に実行された場合は奇数が代入されます。異常終了した場合は偶数が代入されます。コマンド・プロシージャなどでアプリケーションを自動実行する場合のエラー処理に使うことができます。
$STATUS の値を調べることで,異常終了に関する情報や対処方法を得られる場合があります。( 詳しくは,「ヘルプとシステム・メッセージ」 をご覧ください。)
常に $STATUS の下位3ビットの値と等しくなります。この部分は重大度レベルと呼ばれ,アプリケーションが異常終了した際の異常の重大度を示します。
| 値 | 重大度 |
|---|---|
| 0 | 警告 (Warning) |
| 1 | 正常終了 (Success) |
| 2 | エラー (Error) |
| 3 | 情報 (Information) |
| 4 | 致命的なエラー (Fatal) |
コマンド・プロシージャ実行時に,コマンド・ライン上に指定されたパラメータです。コマンド・プロシージャの中では最大 8 個まで受け取ることができます。パラメータが指定されなかった場合や 8 個未満だった場合には,空文字列が代入されます。( 詳しくは,「コマンド・プロシージャを使用する」 をご覧ください。)
バッチ・ジョブを実行するためにコマンド・プロシージャの中で,障害によるバッチ・ジョブの中断から回復する時に使うシンボルです。
シンボルには,DCL コマンドを置き換える以外に,次のような使い方があります。
レキシカル関数とは,コマンド・プロシージャ中で任意のファイルやシステム等の情報を得るための関数です。レキシカル関数の実行結果は,数値または文字列として返されるので,それをシンボルに代入して保存することができます。( 「レキシカル関数一覧」 に,よく使用されるレキシカル関数の一覧をまとめてあります。)
たとえば,次の例ではレキシカル関数を使って現在のプロセスのユーザ名を表示しています。
$ u = f$getjpi("","username")
$ show symbol u
|
引用符 (') を 2 重に使って,あらかじめ決められた文字列にシンボルの内容を埋め込むことができます。
たとえば,次の例では文字列中に自分のユーザ名を埋め込んでいます。
$ u = f$edit(f$getjpi("","username"),"trim")
$ write sys$output "現在のユーザ名は ''u' です。"
|
引用符 (') を使わずに,同様のことを行うには,次のようにします。
$ write sys$output "現在のユーザ名は " + u + " です。"
|
DCL コマンドに対するパラメータ,またはパラメータの一部としてシンボルを使うには,シンボルを引用符 (') で囲みます。
次の例は,今年作成されたファイルの一覧を表示します。
$ thisyear = f$cvtime("today",,"year")
$ dir /since=1-jan-'thisyear'
|
任意のディレクトリにある任意の実行イメージを, DCL コマンドであるかのように定義できます。この場合,定義される実行イメージは DCL の RUN コマンドで実行できることが必要です。
次のようにして定義します。
$ mytool == "$ sys$login:mytool.exe"
|
この場合,グローバル・シンボルを使うのが一般的です。一度シンボルを定義すると,シンボルを削除するか,ログアウトするまで有効です。定義された実行イメージを起動するには,DCL プロンプトで次のように入力します。
$ mytool
|