| 前へ | 次へ | 目次 | 索引 | 
次のことに注意してください。
特権付きユーザが省略時のデバイスおよびディレクトリを他のユーザ・アカウントに設定した場合には, "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, 1998 01:40 PM 
    Total number of users = 1,  number of processes = 11 
 
 Username     Interactive  Subprocess   Batch 
 RSMITH              9         2 
 | 
コマンド・プロシージャとは,DCL コマンドと, DCL コマンドで使用されるデータ行が格納されたファイルです。本章では,次のことについて説明します。
その他の情報については,次のものを参照してください。
DCL コマンド・プロシージャには,次の 2 種類があります。
15.1 コマンド・プロシージャを作成するための基礎的な説明
コマンド・プロシージャを作成するには,次の 2 種類の方法があります。
作成するファイルには,コマンド行,ラベル,コメント,条件文,変数を格納できます。
15.1.1 省略時のファイル・タイプ
コマンド・プロシージャの省略時のファイル・タイプは .COM です。コマンド・プロシージャの名前を指定するときに,ファイル・タイプとして .COM を指定した場合には,ファイル名を指定するだけで,コマンド・プロシージャを実行できます。 SUBMITコマンドとプロシージャ実行 (@) コマンドでは,特に指定した場合を除き,ファイル・タイプは .COM であるものと解釈されます。
15.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 コマンド行の先頭にはドル記号を指定してください。
15.2 コマンド行でのラベルの使用
DCL コマンド・プロシージャでは,ループ,コード・セクション,サブルーチンの先頭をマークするためにラベルを使用します。ラベルを使用する場合には,次の規則に注意してください。
コマンド・インタプリタがラベルを検出すると,ローカル・シンボル・テーブルの特殊なセクションにそのラベルが登録されます。ラベルのために使用できる容量は制限されています。コマンド・プロシージャで多くのシンボルを使用し,多くのラベルが含まれている場合には,コマンド・インタプリタはシンボル・テーブル空間をすべて使用してしまう可能性があり,エラー・メッセージが表示されます。この場合には,プロシージャに DELETE/SYMBOL コマンドを指定して,不要になったシンボルを削除します (ただし,ラベルを削除することはできません)。
15.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 コマンドを入力しなければならない。 | 
コマンド・プロシージャを理解しやすく,また管理しやすくするには,プロシージャが最初のコマンドから最後のコマンドへと順に実行されるように,文を作成しなければなりません。
15.5.2 手順 2: 変数を割り当て,条件をテストする
値を変数に割り当てるには,多くの方法があります。この節では,INQUIRE コマンドの使い方について説明します。他の方法については, 第 16 章 を参照してください。
値を変数に割り当て,条件をテストするには,次の操作を実行します。
| 手順 | 操作 | 
|---|---|
| 1 | INQUIRE コマンドを使用して,値を変数に割り当てる。 | 
| 2 | 実行しなければならない処理を判断する。 | 
| 3 | IF 文と THEN 文を使用して条件をテストする。 | 
| 4 | プログラム・スタブを作成し,コマンドのプレースホルダとしてコマンド・プロシージャに挿入する。 | 
| 5 | 必要に応じてエラー・メッセージを作成する。 | 
| 前へ | 次へ | 目次 | 索引 |