前へ | 次へ | 目次 | 索引 |
次のことに注意してください。
DCL は無効動詞をファイル指定として使用し,"DCL$PATH:.*" を省略時のファイル指定として使用して検索を実行するため,特定のファイルが検索されるような方法で論理名を定義することができる。たとえば,論理名 FOO を "FOO.EXE" として定義し,DCL プロンプトに対して "FOO" と入力すると,FOO.COM は絶対に起動されず,FOO.EXE だけが起動される。
特権付きユーザが省略時のデバイスおよびディレクトリを他のユーザ・アカウントに設定した場合には,"SYS$DISK:[]" を DCL$PATH 論理名の定義に指定しないでください。この操作を実行すると,DCL はカレント・ディレクトリを検索します。入力エラーがある場合や,検索リストで変換の配置方法が不適切な場合には,カレント・ディレクトリのユーザ・イメージが検索され,特権が与えられた状態で誤って起動される可能性があります。 |
次の制限事項に注意してください。
$ DEFINE DCL$PATH SYS$SYSTEM,SYS$DISK:[]FOO $ TYPE SHOWME.COM $ SHOW SYMBOL P1 $ EXIT $ SHOWME USERS OpenVMS User Processes at MARCH 2, 1999 01:40 PM Total number of users = 1, number of processes = 11 Username Interactive Subprocess Batch RSMITH 9 2 |
コマンド・プロシージャ とは,DCL コマンドと,DCL コマンドで使用されるデータ行が格納されたファイルです。1 つか 2 つの DCL コマンドしか入っていない簡単なコマンド・プロシージャもありますが,複雑なコマンド・プロシージャになると,洗練されたコンピュータ・プログラムのような働きをします。コマンド・プロシージャを実行すると,DCL インタプリタはファイルを読み込んで,その中に入っているコマンドを実行します。
システム管理者がシステム・ログイン・コマンド・プロシージャを設定した場合には,ログインするたびにそれが実行されます。システム・ログイン・コマンド・プロシージャを使用すれば,システム管理者は,自分を含むシステム上のすべてのユーザがログインしたときに,必ず特定のコマンドが実行されるように設定できます。
システム・ログイン・コマンド・プロシージャを実行した後,システムはパーソナル・ログイン・コマンド・プロシージャを実行します(存在する場合)。パーソナル・ログイン・コマンド・プロシージャは,システム環境をカスタマイズするためのものです。パーソナル・ログイン・コマンド・プロシージャに登録されているコマンドは,ログインするたびに実行されます。つまり,ログイン時には,最大 2 つのログイン・コマンド・プロシージャが自動的に実行されます(システム全体のログイン・コマンド・プロシージャの他にユーザ独自のログイン・コマンド・プロシージャがある場合はその両方)。
ユーザのアカウントを設定した人が,ユーザの最上位ディレクトリにログイン・コマンド・プロシージャを格納することもあります。ログイン・コマンド・プロシージャが最上位ディレクトリに格納されていない場合には,自分でログイン・コマンド・プロシージャを作成し,LOGIN.COM という名前を付け,最上位ディレクトリに格納することもできます。システム管理者が特に指定しない限り,ユーザがログインしたとき,そのユーザが作成した LOGIN.COM ファイルが実行されます。
本章では,次のことについて説明します。
DCL コマンド・プロシージャには,次の 2 種類があります。
作成された順に,一連の DCL コマンドを実行する。
プログラムのような機能を実行する。
13.1 コマンド・プロシージャを作成するための基礎的な説明
コマンド・プロシージャを作成するには,次の 2 種類の方法があります。
作成するファイルには,コマンド行,ラベル,コメント,条件文,変数を格納できます。
13.1.1 省略時のファイル・タイプ
コマンド・プロシージャの省略時のファイル・タイプは .COM です。コマンド・プロシージャの名前を指定するときに,ファイル・タイプとして .COM を指定した場合には,ファイル名を指定するだけで,コマンド・プロシージャを実行できます。SUBMITコマンドとプロシージャ実行(@)コマンドでは,特に指定した場合を除き,ファイル・タイプは .COM であるものと解釈されます。
13.1.2 コマンドの作成
コマンド・プロシージャにコマンドを登録する場合には,次のことに注意してください。
$ PRINT LAB.DAT - /AFTER=17:00 - /COPIES=20 - /NAME="COMGUIDE" |
コマンド行を作成する場合には,次のことに注意してください。
$ ! Everything between the commands DECK and EOD $ ! is written to the file WEATHER.COM $ ! $ CREATE WEATHER.COM $ DECK $ FORTRAN SUMMER $ LINK SUMMER $ RUN SUMMER $ EOD $ ! $ ! Now execute WEATHER.COM $ @WEATHER $ EXIT |
先頭にドル記号が指定されていないコマンド行も,DCL で正しく解釈されると思われますが,なるべく DCL コマンド行の先頭にはドル記号を指定してください。
13.2 コマンド行でのラベルの使用
DCL コマンド・プロシージャでは,ループ,コード・セクション,サブルーチンの先頭をマークするためにラベルを使用します。ラベルを使用する場合には,次の規則に注意してください。
コマンド・インタプリタがラベルを検出すると,ローカル・シンボル・テーブルの特殊なセクションにそのラベルが登録されます。ラベルのために使用できる容量は制限されています。コマンド・プロシージャで多くのシンボルを使用し,多くのラベルが含まれている場合には,コマンド・インタプリタはシンボル・テーブル空間をすべて使用してしまう可能性があり,エラー・メッセージが表示されます。この場合には,プロシージャに DELETE/SYMBOL コマンドを指定して,不要になったシンボルを削除します(ただし,ラベルを削除することはできません)。
13.2.2 重複するラベル
コマンド・プロシージャで同じラベルを 2 回以上使用する場合には,ローカル・シンボル・テーブルの既存の定義は新しい定義に置き換えられます。
重複するラベルが存在する場合には,GOTO コマンドは,DCL が最後に処理したラベルに制御を渡します。また,GOTO コマンドは重複するラベルを処理するときに,次の規則も使用します。
コマンド・プロシージャを作成する場合には,なるべくコメントを指定してください。コマンド・プロシージャを更新したり,問題を解決するときに,コメントが指定されていると役立ちます。コメントは次の方法で使用できます。
コマンド・プロシージャにコメントを指定する場合には,次の規則が適用されます。
コマンド・プロシージャの作成を開始する前に,コマンド・プロシージャが実行するタスクを会話形式で実行します。必要なコマンドを入力し,使用される変数と条件,および発生する会話を記録します。
これ以降の節では,簡単なコマンド・プロシージャの作成方法を説明します。これ以降で使用する例は,CLEANUP.COM というコマンド・プロシージャです。このコマンド・プロシージャは,ディレクトリを整理するために使用します。
タスクを実行するたびに変化するデータ
変化する可能性のあるコマンドまたはコマンドの集合であり,タスクを実行するたびにテストしなければならない。
条件が満足されるまで繰り返し実行されるコマンドまたはコマンドの集合。
コマンド・プロシージャを作成するには,次の手順を実行します。
手順 | 操作 |
---|---|
1 | コマンド・プロシージャを設計する。 |
2 | 変数を割り当て,条件をテストする。 |
3 | ループを追加する。 |
4 | コマンド・プロシージャを終了する。 |
5 | プログラム・ロジックをテストおよびデバッグする。 |
6 | クリーアップ・タスクを追加する。 |
7 | プロシージャを完成する。 |
コマンド・プロシージャを設計するには,次の操作を実行します。
手順 | 操作 |
---|---|
1 | プロシージャが実行するタスクを決定する。 |
2 | コマンド・プロシージャが使用する変数と,その変数のロード方法を判断する。 |
3 | コマンド・プロシージャが必要とする条件と,条件をテストする方法を判断する。 |
4 | コマンド・プロシージャを終了する方法を決定する。 |
クリーンアップ操作で一般に実行される特定のコマンドがあります。次の表は,これらのコマンドと,そのコマンドが実行するタスクを示しています。
コマンド | 実行するタスク |
---|---|
DIRECTORY | カレント・ディレクトリの内容を表示する。 |
TYPE filespec | ファイルを表示する。 |
PURGE filespec | ファイルをパージする。 |
DELETE filespec | ファイルを削除する。 |
COPY filespec new-filespec | ファイルをコピーする。 |
タスクを実行するときに変化するデータは変数です。ディレクトリにファイルを作成したり,ファイルを削除する場合には,ディレクトリを整理するたびに,ファイル名が異なります。したがって,CLEANUP.COM でファイル名は変数です。
コマンド・プロシージャを実行するたびにテストしなければならないコマンドは,条件であると考えられます。CLEANUP.COM のコマンドは,実行しなければならない操作に応じて,一部またはすべてが実行されるため,各コマンドは条件です。
CLEANUP.COM コマンド・プロシージャで使用する変数と条件を判断した後,変数のロード方法,条件のテスト方法,コマンド・プロシージャの終了方法を判断しなければなりません。CLEANUP.COM コマンド・プロシージャの場合には,次の判断を下しました。
タスク | 実現方法 |
---|---|
変数のロード | コマンド・プロシージャはターミナルからファイル名を入手する。 |
条件のテスト | コマンド・プロシージャ:
|
ループの終了 | ループを終了するには,EXIT コマンドを入力しなければならない。 |
コマンド・プロシージャを理解しやすく,また管理しやすくするには,プロシージャが最初のコマンドから最後のコマンドへと順に実行されるように,文を作成しなければなりません。
前へ | 次へ | 目次 | 索引 |