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


OpenVMS マニュアル


 

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

タイトルページ
目次
まえがき
リファレンス・セクション
    ≫ コマンド一覧
    ≫ レキシカル関数
付録 A:廃止されたコマンド
付録 B:DCL整数表現の範囲を超える数値の処理
索引
PDF    Vol.1   Vol.2
OpenVMS ホーム

HP OpenVMS
DCL ディクショナリ


目次 索引




式の値を評価し,次のように指定された構文に基づいて,コマンドを実行します。

  • 評価が真の場合,THEN キーワードに続く 1 コマンド

  • 条件が真の場合,$THEN ステートメントに続く複数のコマンド

  • 条件が偽の場合,$ELSE ステートメントに続く複数のコマンド


形式

$ IF 式 THEN [$] コマンド

または

$ IF 式

$ THEN [コマンド]

コマンド


. . .

$ [ELSE] [コマンド]

コマンド


. . .

$ ENDIF

  注意
DCL コマンド名としてすでに使用されているシンボル名を割り当てないでください。コマンド・プロシージャの実行を妨げる可能性がありますので, IF, THEN, ELSE および GOTO のようなシンボルの割り当ては行わないでください。


パラメータ



実行されるテストを定義します。式は,1 つまたは複数の数値定数,文字列リテラル,シンボル名,またはレキシカル関数から構成でき,各要素は論理演算子,算術演算子,あるいは文字列演算子で区切ることができます。

IF コマンドに指定する式は,そのコマンドが実行されるときに,自動的に評価されます。英字から始まる文字列で,引用符で囲まれていない文字列は,すべてシンボル名またはレキシカル関数であると解釈され, IF コマンドは,その文字列を現在の値と置き換えます。

IF コマンドに指定する式のシンボル置換は,反復置換ではありません。つまり,各シンボルは 1 回だけしか置き換えられません。しかし,反復置換が必要な場合には,シンボル名の前に引用符,またはアンパサンドを指定します。

コマンド・インタプリタは, IF コマンドに未定義シンボルが含まれている場合,そのコマンドを実行しません。この場合,コマンド・インタプリタは,警告メッセージを表示し,プロシージャの次のコマンドを実行します。

演算子のまとめと式の指定方法についての詳細は,『OpenVMS ユーザーズ・マニュアル』を参照してください。

コマンド

式の結果が真または偽の場合,実行する 1 つまたは複数のコマンドを構文に従って指定します。

説明

IF コマンドは,式の値をテストして式の結果が真の場合,指定されたコマンドを実行します。結果が奇数整数値,文字Y,y,T,またはtで始まる文字列値,または奇数の数値文字列値の場合,式は真になります。

結果が偶数整数値,文字Y,y,T,またはt以外で始まる文字列値,または偶数の数値文字列値の場合,式は偽になります。


#1
$ COUNT = 0 
$ LOOP: 
$ COUNT = COUNT + 1 
   . 
   . 
   . 
$ IF COUNT .LE. 10 THEN GOTO LOOP 
$ EXIT 

この例は,COUNT というシンボル名と IF ステートメントを使用して,コマンド・プロシージャ内でループを設定する方法を示しています。 IF ステートメントは COUNT の値を調べ, COUNT の値が 10 より大きくなったときに,EXIT コマンドを実行します。

#2
$ IF P1 .EQS. "" THEN GOTO DEFAULT 
$ IF (P1 .EQS. "A") .OR. (P1 .EQS. "B") THEN GOTO 'P1' 
$ WRITE SYS$OUTPUT "Unrecognized parameter option ''P1' " 
$ EXIT 
$ A:       !  Process option a 
 . 
 . 
 . 
$ EXIT 
$ B:       !  Process option b 
 . 
 . 
 . 
$ EXIT 
$ DEFAULT: !  Default processing 
 . 
 . 
 . 
$ EXIT 
 

この例は,パラメータが渡されたどうかを調べるコマンド・プロシージャです。 GOTOコマンドは,パラメータで指定されたラベルへ制御を移します。

プロシージャがパラメータで実行されると,プロシージャはそのパラメータを使用して分岐先のラベルを決めます。次に例を示します。

@TESTCOM A 

上記のプロシージャを実行した場合,ラベル A へ分岐します。 EEXIT コマンドは,ラベル Bの手前でプロシージャを終了することに注意してください。

#3
$  SET NOON 
 . 
 . 
 . 
$  LINK CYGNUS,DRACO,SERVICE/LIBRARY 
$ IF $STATUS 
$ THEN 
$  RUN CYGNUS 
$ ELSE 
$   WRITE SYS$OUTPUT "LINK FAILED" 
$ ENDIF 
$ EXIT 

このコマンド・プロシージャは, SET NOON コマンドでエラー・チェックを無効にしています。 LINK コマンド実行後, IF コマンドは予約済みのグローバル・シンボル $STATUS の値をテストします。 $STATUS の値が LINK コマンドの正常終了を示す場合は,次にプログラム CYGNUS を実行します。 LINK コマンドがエラー状態値を返した場合は,コマンド・プロシージャはメッセージを出力して終了します。

#4
$ if 1 .eq. 1 
$ then 
$   if 2 .eq. 2 
$   then 
$     write sys$output  "Hello!" 
$   endif 
$ endif 

この例は,ネストした IF 構造体を使用する方法を示しています。


目次 索引

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