日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMSドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 部:概要
第 1 章:OpenVMS の現在,過去,未来
第 2 部:基本操作
第 2 章:ログイン/ログアウト
第 3 章:DCL コマンド
第 4 章:パスワードの変更
第 5 章:ヘルプとシステム・メッセージ
第 6 章:キーボード
第 7 章:エディタ
第 8 章:ファイル指定
第 9 章:ディレクトリ作成
第 10 章:ファイル操作コマンド
第 11 章:ファイル保護
第 3 部:OpenVMS の便利な機能
第 12 章:ファイルの印刷
第 13 章:バッチ・キュー
第 14 章:プロセス
第 15 章:シンボル
第 16 章:論理名
第 17 章:コマンド・プロシージャ
付録 A :システムの起動と停止
付録 B :日本語環境の設定
付録 C :ネットワークを利用したファイル操作
付録 D :JMAIL ユーティリティ
付録 E :レキシカル関数一覧
付録 F :Linux または UNIX,MS-DOS,日本語 OpenVMS コマンド対応表
付録 G :関連アプリケーション
付録 H :PC 関連製品
付録 I :クイック・リファレンス
付録 J :日本語マニュアル・クイック・リファレンス
索引
PDF
OpenVMS ホーム
はじめよう!日本語 OpenVMS

はじめよう!日本語 OpenVMS


目次 索引

第 17 章
コマンド・プロシージャを使用する

この章では

DCL コマンドを一定の順序で繰り返し実行することがしばしばあります。このように,決まった手順のコマンドを繰り返し実行する場合,コマンド・プロシージャを使うと便利です。 コマンド・プロシージャとは,DCL コマンドと DCL コマンドで使用されるデータ行を 1 つのファイルにしたものです。コマンド・プロシージャを実行することは,その中のコマンド列を実行するのと同じことです。

関連資料

  • 『OpenVMS ユーザーズ・マニュアル』

  • 『OpenVMS システム管理者マニュアル』

  • 『OpenVMS システム管理ユーテリィティ・リファレンス・マニュアル』



17.1 コマンド・プロシージャを作成する

コマンド・プロシージャはエディタを使用して作成します。コマンド・プロシージャの作成規則は次のとおりです。

  • ファイル名は,コマンド・プロシージャで実現しようとする機能にふさわしい名前を付けます。ただし,日本語ファイル名 ( かな漢字 ) は使用しないでください。

  • ファイル・タイプは .COM を使います。

  • 各行の先頭は,$ で開始します。(空白だけの行にも先頭に $ が必要)

  • 注釈(コメント)は,! の後に記述します。



17.2 コマンド・プロシージャを実行する--- @

作成したコマンド・プロシージャを実行するには次のように入力します。

    $ @コマンド・プロシージャ・ファイル指定 [パラメータ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 



17.5 パラメータの使用

ファイル指定が異なるためにプログラムごとに別々のコマンド・プロシージャを作るのは不便です。そこで,コマンド・プロシージャにパラメータを使用して,実行時にファイル名を与えることができます。

パラメータの使用には次の規則があります。

  • コマンド・プロシージャ内では,パラメータは 'P1','P2',……,'P8' と 8 個まで使えます。P1〜P8 はそのコマンド・プロシージャ内のみで有効なローカル・シンボルです。これらのシンボルをコマンド・プロシージャ内で使う場合は引用符 (') で囲むことが必要です。

  • 実行時には,コマンド・プロシージャ・ファイル名のあとにスペースを 1 つ以上あけて第 1 パラメータから順に入力します。パラメータの区切りにはスペースを使います。

  • パラメータは自動的に大文字扱いにされます。大文字扱いにしたくない場合は,パラメータを二重引用符 (") で囲みます。パラメータとして漢字やスペースを指定する場合も二重引用符 (") で囲みます。



17.6 パラメータの使用例

ソース・プログラム名をパラメータとして,コンパイル,リンク,実行をするコマンド・プロシージャ (TEST1.COM) の例を次に示します。

TEST1.COM

    ----------------------------------------------    
        $ FORTRAN 'P1' 
        $ LINK 'P1' 
        $ RUN 'P1' 
    ---------------------------------------------- 

コマンド実行の状態を確認できるように SET VERIFY を実行します。

    $ SET VERIFY    

パラメータとして ABC を指定して TEST1.COM を実行します。

    $ @TEST ABC    

各コマンドを表示しながら自動的に実行します。

    $ FORTRAN ABC    
    $ LINK ABC 
    $ RUN ABC 



17.7 ログイン・プロシージャを使用する

ログインすると自動的に実行されるプロシージャを, ログイン・プロシージャといいます。

キーの定義やコマンド列の置き換えは,ログアウトすると無効になってしまいます。同じ定義や置き換えを使いたい場合は,ログイン時に再定義しなければなりません。キーの定義やコマンド列の置き換えをログイン・プロシージャに入れておけば,自動的に定義されるので,ログインするたびに定義し直す手間が省けます。

ログイン・コマンド・プロシージャには,通常は次のようなコマンドを盛り込みます。

コマンド 参照箇所
論理名の定義 (ASSIGN,DEFINE コマンド) 第 16 章
グローバル・シンボルの定義 (==) 第 15 章
キーの定義 (DEFINE/KEY コマンド) 第 6 章
デフォルト・ディレクトリの設定や表示
(SET DEFAULT コマンド,SHOW DEFAULT コマンド)
第 8 章
環境設定 (JSY$CONTROL ユーティリティ) 第 3 章



17.8 ログイン・プロシージャを作成する

ログイン・プロシージャのファイル名とファイル・タイプは,通常は,LOGIN.COM です。このファイルは,ログイン・ディレクトリに置かなければなりません。エディタを使用して作成します。

ログイン・プロシージャを作成する際は,次の規則に従ってください。

  • 1 行に 1 コマンド列のみを入力する。

  • 行の先頭は,$で開始する。

  • 実際のコマンド入力と同じ形式で入力する。

  • コメントは ! の後に記述する。



17.9 ログイン・プロシージャの例

ログイン・プロシージャの例 (LOGIN.COM) を示します。

LOGIN.COM の内容を表示します。

    $ TYPE LOGIN.COM    

LOGIN.COM

    ----------------------------------------------    
        $! LOGIN.COM (YAMADA) 
        $ DEFINE/KEY PF1 "SHOW DEFAULT" 
        $ DEFINE/KEY PF2 "SET DEFAULT" 
        $ PR == "PRINT/QUEUE=PRINTER1" 
        $ EXIT 
    ---------------------------------------------- 

この例では,キーを定義 (SHOW DEFAULT, SET DEFAULT) しています。また,シンボルも定義 (PR == "PRINT/QUEUE=PRINTER1") しています。そして,処理の実行を終了するために EXIT としています。 ( 感嘆符 (!) に続く文字列は注釈 ( コメント ) です。)

17.10 プロンプト・メッセージを出力するコマンド・プロシージャ--- INQUIRE

画面にプロンプト・メッセージを出力し,ユーザが入力した文字列をシンボルに割り当てるには次のようにします。 (小文字は大文字に変換されます。)

    $ INQUIRE[/GLOBAL] シンボル  "プロンプト・メッセージ"    

次の例 HELP.COM では,HELP で画面に出される内容をファイルに出力します。その際,作ったファイルをプリンタへ出力するか尋ね,ユーザが Y と入力した場合はプリンタ出力します。 (感嘆符 (!) に続く文字列は注釈 (コメント) です。)

HELP.COM

    -----------------------------------------------------    
        $ 
        $! HELP FILE を出力するコマンド・プロシージャ 
        $ 
        $ HELP/NOPAGE/NOPROMPT/OUTPUT='P1'.HLP 'P1' 
        $ INQUIRE ANS " PRINT OUT? [N] " 
        $ IF ANS THEN PRINT 'P1'.HLP 
        $ EXIT 
    ----------------------------------------------------- 



17.11 シンボルと文字列をコマンド・プロシージャに組み込む

DCL コマンド列以外の文字列をシンボルに定義してシンボルを使用することができます。たとえば,シンボルにディレクトリ名を定義し,コマンド列の一部としてそのシンボルを用いることができます。

ただし,シンボルを DCL コマンド行の先頭以外で使う場合には,次のように引用符 (') で囲むことが必要です。

    $ DIR_NAME = "[YAMADA.WORK]"    
    $ SET DEF 'DIR_NAME' 

次の例では,実行時にパラメータが指定されなかった時は,P1 を入力するように促します。( コマンド行の先頭以外でシンボルを使う場合には,引用符 (') で囲みます。)

DEFAULT.COM

    ---------------------------------------------------------    
        $ IF P1 .EQS. "" THEN INQUIRE P1 "INPUT P1" 
        $ SET DEFAULT [YAMADA.'P1'] 
        $ SHOW DEFAULT 
        $ EXIT 
    --------------------------------------------------------- 

SET VERIFY を実行します。

    $ SET VERIFY    

DEFAULT.COM を実行し,P1 として WORK を指定します。

    $ @DEFAULT WORK 
    $ IF P1 .EQS. "" THEN INQUIRE P1 "INPUT P1"    

P1 が WORK に置き変わって実行されます。

    $ SET DEFAULT [YAMADA.WORK]    
    $ SHOW DEFAULT 
      DKA0:[YAMADA.WORK] 
    $ EXIT 



17.12 シンボルとコマンド・プロシージャを組み合わせる

シンボルとコマンド・プロシージャを組み合わせることもできます。

次の例では,表示を整えるために空白行をターミナルに出力し, It was fun working with you. Have a nice day !というメッセージをターミナルに出力します。次に表示を整えるために空白行をターミナルに出力し,ログアウトします。

LOGOUT.COM

    ---------------------------------------------------------------------------    
        $ WRITE SYS$OUTPUT "" 
        $ WRITE SYS$OUTPUT "It was fun working with you. Have a nice day !" 
        $ WRITE SYS$OUTPUT "" 
        $ LOGOUT 
    --------------------------------------------------------------------------- 

BYE というシンボル名に,コマンド・プロシージャを起動するコマンド文字列を定義します。

    $ BYE == "@SYS$LOGIN:LOGOUT.COM"    

シンボル BYE を実行します。コマンド・プロシージャ LOGOUT.COM が起動し,ターミナルに空白行が出力されます。

    $ BYE    
  

ターミナルにメッセージが出力され,次に空白行が出力されます。

    It was fun working with you.  Have a nice day  !    
  

コマンド・プロシージャ LOGOUT.COM の最終行が実行され,ログアウトします。

      YAMADA   logged out at 14-FEB-2002 18:30:45.10    



17.13 ログイン・コマンド・プロシージャを起動させずにログインする

ログイン・コマンド・プロシージャを起動しないでログインするには,ユーザ名を入力するときに /NOCOMMAND という修飾子をつけます。

                                                                 
 
            Welcome to OpenVMS/Alpha V7.3-1 
 
    Username: YAMADA/NOCOMMAND 
    Password: 
          Welcome to OpenVMS/Alpha version V7.3-1 on node ABC 
       Last interactive login on Tuseday, 12-FEB-2002 10:26 
 
    $ 
                                                                 

また,次のようにして,別のコマンド・プロシージャ・ファイルをログイン・コマンド・プロシージャとして指定することもできます。

    /COMMAND = ファイル指定 



17.14 条件式を使用する

IF コマンドを使うことで,条件によって処理を変えることができます。次のコマンド・プロシージャは,入力した数値が負数の場合に警告を表示します。

    $ INQUIRE VALUE 
    $ IF VALUE .LT. 0 THEN WRITE SYS$OUTPUT "負数です。"    

IF コマンドの形式は次の通りです。

    $ IF 条件式 THEN コマンド    

条件式が成り立つ場合 ( 真の場合 ) に THEN の後のコマンドが実行されます。THEN の後に書くことのできるコマンドは 1 行につき 1 つだけです。

複数のコマンドを書く場合には次のように書きます。条件式が成り立つ場合は,THEN と ENDIF で挾まれたコマンドが実行されます。

    $ IF 条件式 
    $ THEN 
    $   コマンド1    
    $   コマンド2 
    $       : 
    $   コマンドn 
    $ ENDIF 

条件式が成り立たない時にコマンドを実行させたい場合には, ELSE を使います。条件式が成り立たなかったとき,ELSE と ENDIF ではさまれたコマンドが実行されます。

    $ IF 条件式 
    $ ELSE 
    $   コマンド1    
    $   コマンド2 
    $       : 
    $   コマンドn 
    $ ENDIF 

THEN と ELSE の両方を使うこともできます。条件式が成り立つ場合には,THEN と ELSE に挾まれたコマンドが実行されます。条件式が成り立たなかった場合には ELSE と ENDIF に挾まれたコマンドが実行されます。

    $ IF 条件式 
    $ THEN 
    $   コマンド1a    
    $   コマンド2a 
    $       : 
    $   コマンドna 
    $ ELSE 
    $   コマンド1b 
    $   コマンド2b 
    $       : 
    $   コマンドnb 
    $ ENDIF 

コマンドが 1 つしかない場合は,次のように短縮して書くこともできます。

    $ IF 条件式 
    $ THEN コマンドa    
    $ ELSE コマンドb 
    $ ENDIF 



17.15 条件式の書き方

条件式の代表的な書き方は,2 つの数値や文字列の比較によるものです。 2 つの数値や文字列 (またはそれらを含んだシンボル) を比較演算子で結びます。

たとえば,I .LT. 0 は,「シンボル I が 0 より小さいとき」という意味です。 .LT. はその左辺と右辺を数値として比較します。左辺が右辺より小さければ真,そうでなければ偽の値を持ちます。 DCL の数値比較演算子には次のようなものがあります。

表 17-1 数値比較演算子
演算子 意味
.EQ. 等しい
.GE. 左辺が右辺より大きいまたは等しい
.GT. 左辺が右辺より大きい
.LE. 左辺が右辺より小さいまたは等しい
.LT. 左辺が右辺より小さい
.NE. 等しくない

文字列の比較は文字列用の比較演算子を使用します。文字列の大小の比較は ASCII コードで比較されます。

表 17-2 文字列比較演算子
演算子 意味
.EQS. 等しい
.GES. 左辺が右辺より大きいまたは等しい
.GTS. 左辺が右辺より大きい
.LES. 左辺が右辺より小さいまたは等しい
.LTS. 左辺が右辺より小さい
.NES. 等しくない

条件式を .AND. または .OR. でつなぐと複数の条件式を組み合わせることもできます。次のようにします。

    $ IF 条件式1 .AND. 条件式2 THEN コマンド    

IF-THEN-ELSE-ENDIF の形式でも同じように書くことができます。たとえば,次のコマンド・プロシージャでは,1 〜 9 以外の数字を入力した時に警告を出します。

    $ INQUIRE VALUE 
    $ IF VALUE .GE. 1 .OR. VALUE .LE. 9 
    $ THEN 
    $   WRITE SYS$OUTPUT "正しい数値です" 
    $ ELSE 
    $   WRITE SYS$OUTPUT "範囲外の数値です"    
    $ ENDIF 

条件式が複雑でわかりにくい時は,次のように括弧 ( ) で括って整理しましょう。

    $ IF (VALUE .GE. 1) .OR. (VALUE .LE. 9)    


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.