前へ | 次へ | 目次 | 索引 |
いくつかのシンボルは特別な目的のために使用されます。ユーザは必要に応じて,それらのシンボルを参照または上書きすることができます。
15.12.1 $STATUS(グローバル・シンボル)
直前に実行したコマンドやアプリケーションが,正常に実行されたかどうかを示します。正常に実行された場合は奇数が代入されます。異常終了した場合は偶数が代入されます。コマンド・プロシージャなどでアプリケーションを自動実行する場合のエラー処理に使うことができます。
$STATUS の値を調べることで,異常終了に関する情報や対処方法を得られる場合があります。(詳しくは,第 5 章 をご覧ください。)
15.12.2 $SEVERITY(グローバル・シンボル)
常に $STATUS の下位3ビットの値と等しくなります。この部分は重大度レベルと呼ばれ,アプリケーションが異常終了した際の異常の重大度を示します。
値 | 重大度 |
---|---|
0 | 警告(Warning) |
1 | 正常終了(Success) |
2 | エラー(Error) |
3 | 情報(Information) |
4 | 致命的なエラー(Fatal) |
コマンド・プロシージャ実行時に,コマンド・ライン上に指定されたパラメータです。コマンド・プロシージャの中では最大 8 個まで受け取ることができます。パラメータが指定されなかった場合や 8 個未満だった場合には,空文字列が代入されます。(詳しくは,第 17 章 をご覧ください。)
15.12.4 $RESTART(グローバル・シンボル)
バッチ・ジョブを実行するためにコマンド・プロシージャの中で,障害によるバッチ・ジョブの中断から回復する時に使うシンボルです。
15.13 シンボルの便利な使い方
シンボルには,DCL コマンドを置き換える以外に,次のような使い方があります。
15.13.1 レキシカル関数の結果を受け取る
レキシカル関数とは,コマンド・プロシージャ中で任意のファイルやシステム等の情報を得るための関数です。レキシカル関数の実行結果は,数値または文字列として返されるので,それをシンボルに代入して保存することができます。( 付録 E に,よく使用されるレキシカル関数の一覧をまとめてあります。)
たとえば,次の例ではレキシカル関数を使って現在のプロセスのユーザ名を表示しています。
$ 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 |
この章では
論理名は,ファイルやディレクトリ,あるいはデバイスの別名を定義するために使用したり,ユーザの環境設定のために使用します。
定義された論理名は,日本語 OpenVMS システムのさまざまなアプリケーションから参照することができます。
関連資料
ファイル指定で,各要素の一部または全部を 論理名 と呼ぶ別の名前で置き換えることができます。論理名とは,ファイル指定,装置指定,ディレクトリ指定等にあたえた " 別名 " です。
論理名を使うと入力するコマンド列を短くできたり,覚えやすい名前を付けることができます。
16.2 論理名を定義する -- DEFINE
論理名を定義するには次のようにします。(どちらを使用してもかまいません。)
$ DEFINE [/修飾子] 論理名 等価名[,...] (1) (2) $ ASSIGN [/修飾子] 等価名[,...] 論理名 |
デバイス名 DKA0 のディレクトリ名 [YAMADA.REPORT.KOJIN] に論理名 MINE を割り当てます。
$ DEFINE MINE DKA0:[YAMADA.REPORT.KOJIN] |
この後,次のようにファイル指定ができます。
$ DIRECTORY MINE: |
以下のように表示されます。
Directory DKA0:[YAMADA.REPORT.KOJIN] KEIHI.TXT;1 TRIP.TXT;1 Total of 2 files. |
一般に論理名はログアウトすると自動的に削除(DEASSIGN)されてしまいます。したがって,再びログインしたあと,同じ論理名を使用する場合は,その都度,新しく割り当てる必要があります。そこで,ログイン時に自動的に環境設定を行うログイン・コマンド・プロシージャというファイルを作り,ログインの都度,新しく論理名を割り当てる煩雑さを避けることができます。(第 17 章 をご覧ください。)
16.4 論理名を参照する -- SHOW LOGICAL
使用している論理名に割り当てられている等価名を参照するには,次のようにします。
$ SHOW LOGICAL [/修飾子] [論理名] |
論理名を省略すると,定義してある論理名がすべて表示されます。
16.5 論理名を削除する -- DEASSIGN
論理名を削除するには,次のようにします。
$ DEASSIGN 論理名 |
論理名には様々な属性や,階層構造があります。一般のユーザが定義できる論理名は,自分以外のユーザに影響を与えない範囲に限定されています。以下にそれらを簡単に説明します。
◆属性
論理名には CONCEALED と TERMINAL という 2 つの属性があり,論理名を等価名に翻訳する時の動作を設定できます。
◆論理名の有効範囲
論理名は,そのプロセスの中でのみ有効なものや,システム全体にわたり有効なものなどがあり,それらは論理名テーブルにより管理されます。プロセス,ジョブ,グループ,システム,クラスタの 5 種類があります。
◆論理名の検索順序
論理名を等価名に変換する際に,論理名を検索する検索順序は通常,プロセス,ジョブ,グループ,システム,クラスタの順です。
◆アクセス・モード
論理名が一般のアプリケーションのために設定されたのか,特権を持った特別なアプリケーションのために設定されたのかを示します。ユーザ,スーパーバイザ,エグゼクティブ,カーネルの 4 種類があります。
16.7 知っておくと便利な論理名
日本語 OpenVMS では,さまざまな論理名が自動的に定義されています。いくつかの論理名はユーザが日本語 OpenVMS を使う上でたいへん役に立ちます。それらの論理名の主なもを以下に示します。
16.7.1 SYS$LOGIN
ユーザのログイン・ディレクトリを示す論理名。
16.7.2 SYS$INPUT
ユーザの入力デバイスを示す論理名。
通常はユーザの使用しているターミナルのキーボードを示します。コマンド・プロシージャ実行中は,そのコマンド・プロシージャ自身を示します。
(C 言語の stdin に相当します。)
16.7.3 SYS$OUTPUT
ユーザの出力デバイスを示す論理名。
通常はユーザの使用しているターミナルのディスプレイを示します。
(C 言語の stdout に相当します。)
16.7.4 SYS$ERROR
ユーザのエラーメッセージ出力デバイスを示す論理名。
通常は SYS$OUTPUT と同じデバイスを示します。
(C 言語の stderr に相当します。)
16.7.5 SYS$SCRATCH
一時的に使用するファイルを置くディレクトリを示す論理名。
エディタや SORT ユーティリティなどが作業中のファイルを一時的に保管するために使います。
16.7.6 SYS$DISK
デフォルト・ディレクトリのあるディスクを示す論理名。
DCL の SET DEFAULT コマンドで変更されます。
16.7.7 SYS$SYSDEVICE
システム・ディスクを示す論理名。
上記の論理名はすべて SYS$ で始まっています。これは,これらの論理名が日本語 OpenVMS によって定義された論理名であることを示しています。ユーザは特別な理由がない限り,SYS$ で始まる論理名を削除したり変更することは禁止されています。 |
論理名もシンボルも,コマンドやファイルの別名を定義できるという意味では似ていますが,用途は大きく異なります。
★論理名★
デバイス,ディレクトリ,ファイル,キューなどを指定できます。DCL コマンドのパラメータとして使用します。
論理名は,日本語 OpenVMS システム上のほぼあらゆるアプリケーションから参照することができます。
★シンボル★
コマンドまたは,コマンド文字列の一部を指定できます。コマンド文字列の代わりに使用します。
たとえば,次の例では,論理名 MYTOOL を使用して,MYSORT というシンボルに自作のユーティリティを定義しています。
$ DEFINE MYTOOL DISK$USER:[YAMADA.TOOL] $ MYSORT == "$ MYTOOL:MYSORT.EXE" |
この章では
DCL コマンドを一定の順序で繰り返し実行することがしばしばあります。このように,決まった手順のコマンドを繰り返し実行する場合,コマンド・プロシージャを使うと便利です。 コマンド・プロシージャとは,DCL コマンドと DCL コマンドで使用されるデータ行を 1 つのファイルにしたものです。コマンド・プロシージャを実行することは,その中のコマンド列を実行するのと同じことです。
関連資料
17.1 コマンド・プロシージャを作成する
コマンド・プロシージャはエディタを使用して作成します。コマンド・プロシージャの作成規則は次のとおりです。
作成したコマンド・プロシージャを実行するには次のように入力します。
$ @コマンド・プロシージャ・ファイル指定 [パラメータ1] [パラメータ2] … |
コマンド・プロシージャ・ファイルがデフォルト・ディレクトリにない場合は,ディレクトリ指定も必要です。
コマンド・プロシージャは,コマンド・プロシージャ・ファイルのコマンドを先頭から順番に実行します。また,1 つのコマンドの実行が完全に終わってから次のコマンドに進みます。
17.3 実行コマンドを表示する -- SET VERIFY
デフォルトでは,コマンド・プロシージャ実行中に,コマンドそのものは画面に表示されません。実行コマンドを表示するには,次のようにします。
$ SET VERIFY |
実行コマンドの表示をしない場合は,次のようにします。
$ SET NOVERIFY |
これらのコマンドは,ターミナルからコマンドとして入力できますが,コマンド・プロシージャの中に含めることもできます。
17.4 コマンド・プロシージャの実行例
ABC.FOR というプログラムをコンパイル,リンク,実行するコマンド・プロシージャ(TEST.COM)の例を次に示します。
TEST.COM
---------------------------------------------- $ FORTRAN ABC $ LINK ABC $ RUN ABC ---------------------------------------------- |
コマンド実行の状態を確認できるように,SET VERIFY を実行します。
$ SET VERIFY |
TEST.COM 実行します。
$ @TEST |
各コマンドを表示しながら自動的に実行します。
$ FORTRAN ABC $ LINK ABC $ RUN ABC |
ファイル指定が異なるためにプログラムごとに別々のコマンド・プロシージャを作るのは不便です。そこで,コマンド・プロシージャにパラメータを使用して,実行時にファイル名を与えることができます。
パラメータの使用には次の規則があります。
前へ | 次へ | 目次 | 索引 |