前へ | 次へ | 目次 | 索引 |
式の値を評価し,次のように指定された構文に基づいて,コマンドを実行します。
- 評価が真の場合,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 構造体を使用する方法を示しています。
ディスクまたは磁気テープ・ボリュームをフォーマットしたり,ボリュームにラベルを書き込んだりします。また,構造情報を持つシステム・ファイルを除き,ディスクを空にします。ディスクの以前の内容はすべて失われます。INITIALIZEコマンドの大部分の操作には, VOLPRO (ボリューム保護) 特権が必要です。
INITIALIZE 装置名[:] ボリューム・ラベル
装置名[:]
初期化するボリュームを物理的にマウントする装置の名前を指定します。この時点で装置を割り当てる必要はありません。ただし,初期化の前には割り当てるようにしてください。
ボリューム・ラベル
ボリュームでエンコードする ID を指定します。ディスク・ボリュームの場合は, ANSI 文字を 12 文字まで指定できます。磁気テープ・ボリュームの場合は,英数字を 6 つまで指定できます。文字は自動的に大文字に変換されます。ディスク・ボリューム・ラベルは,英数字,ドル記号 ($),アンダスコア (_),およびハイフン (-) だけで構成することをおすすめします。磁気テープのボリューム・ラベルに ANSI a 文字を使用するには,ボリューム名を二重引用符 (" ") で囲まなければなりません。 ANSI a 文字についての詳細は,/LABEL 修飾子の説明を参照してください。
OpenVMS オペレーティング・システムでのディスク・ボリュームの省略時の設定の形式は, Files-11 オンディスク構造レベル 2 と呼ばれています。磁気テープ・ボリュームの省略時の設定の形式は,磁気テープ・ラベルとファイル構造に関する情報交換用の ANSI 規格 Level 3 (ANSI X3.27-1978) に基づいています。INITIALIZE コマンドを使用して,Files-11 オンディスク構造レベル 1 形式でディスク・ボリュームを初期化することもできます。
ボリュームを初期化するには VOLPRO 特権が必要です。ただし次のボリュームを初期化するする場合は,VOLPRO 特権は必要ありません。
- 空のディスクまたは磁気テープ・ボリューム (つまり,何も書き込まれていないボリューム)。
- 現在の利用者識別コード (UIC),または UIC[0,0] によって所有されるディスク・ボリューム。
- 初期化時に現在の UIC から保護しなかったために,現在の UIC による書き込み (W) アクセスが許可されている磁気テープ・ボリューム。
ボリュームを初期化してマウントした後に, SET SECURITY コマンドを使用して機密保護プロファイルを変更できます。 ディスク・ボリュームを初期化すると,そのルート・ディレクトリ (000000.DIR;1) のキャッシング属性はライトスルーに設定されます。つまり,省略時の設定では,ボリューム中に作成するすべてのファイルとディレクトリが,ライトスルーのキャッシング属性を継承します。キャッシング属性を変更するには, SET FILE コマンドを /CACHING_ATTRIBUTE 修飾子を付けて使用します。
磁気テープ・ボリュームを初期化する場合は常に,INITIALIZE コマンドはボリュームに対して読み込みを行います。磁気テープが空の場合は,次のような回復不可能なエラーを検出することがあります。
- ボリューム番号の誤りを示すエラー・メッセージ。
%INIT-F-VOLINV, volume is invalid
- 磁気テープの暴走。これは,前に書き込んだことがない,またはマシンの動作確認に使用されていた新しい磁気テープで頻繁に発生します。磁気テープの暴走を停止させる唯一の方法は,磁気テープ・ドライブをいったんオフラインにしてからオンラインに戻すことです。
上記のような回復不可能なエラーが発生した場合に,磁気テープを正常に初期化するためには, VOLPRO (ボリューム保護) 特権を持つアカウントから,次の修飾子を指定して INITIALIZE コマンドを各磁気テープに対して繰り返し実行します。
/OVERRIDE=(ACCESSIBILITY,EXPIRATION)
この修飾子を指定すると INITIALIZE コマンドは,磁気テープのラベルをチェックしなくなります。
VOLPRO 特権を持っている場合, INITIALIZE コマンドは所有権情報を読み込まずにディスクを初期化します。 VOLPRO 特権を持っていない場合は,ディスク・ボリュームを初期化する前にその所有権を調べます。ディスクが空の場合,または形式が誤っている場合は,回復不可能なドライブ・エラーが発生することがあります。空のディスクまたは誤った形式のディスクによって回復不可能なドライブ・エラーが発生した場合は,VOLPRO 特権を持つアカウントから, /DENSITY 修飾子を指定して INITIALIZE コマンドを各磁気テープに対して実行すると,ディスクを正常に初期化できます。
ほとんどの INITIALIZE コマンド修飾子には,入出力 (I/O) 効率を最大にするパラメータを指定できます。
/ACCESSED=ディレクトリ数
Files-11 オンディスク構造レベル 1ディスクにだけ有効です。ディスク・ボリュームに対して,システム空間で作成できるディレクトリ数を 0 〜 255 の範囲で指定します。省略時の設定の値は 3 です。
/BADBLOCKS=(領域[,...])
ディスク・ボリュームに対して,ボリュームの不良領域を指定します。 INITIALIZE コマンドは,この領域を割り当て済みとしてマークして,データを書き込めないようにします。領域の指定に使用できる形式は,次のとおりです。
lbn[:数] 割り当て済みとしてマークする,最初のブロックの論理ブロック番号 (LBN),または,最初のブロックから数えたブロック数 (省略可能)。 sec.trk.cyl[:数] 割り当て済みとしてマークする,最初のブロックのセクタ,トラック,シリンダ,または,最初のブロックから数えたブロック数 (省略可能)。
弊社が提供し,OpenVMS オペレーティング・システムでサポートしている媒体は,ディスクと TU58 カートリッジを除いて,すべて工場出荷時にフォーマットされていますが,不良ブロック・データが含まれています。 Bad Block Locator ユーティリティ (BAD) または診断フォーマッタ EVRAC を使用して,不良ブロック・データをリフレッシュしたり,不良ブロック・データをマークしたりできます (ただし,ディスクと TU58 カートリッジを除きます)。 /BADBLOCKS 修飾子は,ボリュームの不良ブロック・データとして識別できない不良ブロックを指定する場合にだけ必要です。
DIGITAL Storage Architecture (DSA) ディスク (たとえば,UDA-50 や HSC50 制御装置に接続されているディスク) では,不良ブロックが制御装置によって処理されるため,ファイル・システムからは,論理的には不良ブロックは存在しないように見えます。
BAD を実行する方法については,『OpenVMS Bad Block Locator Utility Manual』 (ドキュメンテーション CD-ROM に用意されています) を参照してください。
/CLUSTER_SIZE=ブロック数
ディスク・ボリュームに対して,最小割り当て単位をブロック数で定義します。 1 つのボリュームに指定できる最大のサイズは,16382 ブロック,または,そのボリューム・サイズの 1/50 のどちらか小さい方の値です。Files-11 オンディスク構造レベル 5 ディスク (ODS-5) の場合,省略時のクラスタ・サイズは 3 です。この場合最小の値は,次の式から計算できます。
(ブロック数で表わしたディスク・サイズ)/(65535×4096)
端数は整数値に切り上げなければなりません。
Files-11 オンディスク構造レベル 2 ディスク (ODS-2) の場合,クラスタ・サイズの省略時の設定は,ディスク容量によって異なります。ディスク容量が 50,000 ブロックより小さいディスクでは,省略時の設定は 1 です。ディスク容量が 50,000 ブロックより大きいディスクでは,省略時の設定は 3 あるいは次の式によって求められる値以上です。
(ブロック数で表わしたディスク・サイズ)/(255×4096)
端数は整数値に切り上げなければなりません。
注意
V7.2 以降では,ODS-2 の計算式で求められる値よりも小さな値を ODS-2 ボリュームのクラスタ・サイズに指定することができます。しかし,このボリュームを V7.2 よりも前のバージョンを稼動しているシステムでマウントしようとした場合,次のエラーが表示されてマウントが中断します。
%MOUNT-F-FILESTRUCT, unsupported file structure level
Files-11 オンディスク構造レベル 2 (ODS-2) ディスクの初期化時に省略時の値を選択した場合,そのディスクは OpenVMS の前のバージョンでマウントすることができます。
Files-11 オンディスク構造レベル 1 ディスク (ODS-1) の場合,クラスタ・サイズは常に 1 にしなければなりません。
注意
/LIMIT を指定し,/CLUSTER_SIZE の値を指定しない場合, /CLUSTER_SIZE=8 の値が使用されます。
/DATA_CHECK[=(オプション[,...])]
ディスクでの読み込みと書き込みの操作をすべてチェックします。省略時の設定では,データ・チェックは行われません。次のオプションのいずれか,または両方を指定します。
READ 読み込み操作をすべてチェックします。 WRITE 書き込み操作をすべてチェックします。 /DATA_CHECK修飾子だけを指定した場合の省略時の設定です。
ディスクの初期化時に指定したチェック方法に従いたくない場合は, MOUNT コマンドで /DATA_CHECK 修飾子を指定してボリュームをマウントします。
/DENSITY=記録密度
特定のテープとディスクのフォーマット密度の値を指定することができます。磁気テープ・ボリュームでは,磁気テープに書き込む際の密度をビット / インチ (bpi) で指定します。指定できる密度値は 800 bpi,1600 bpi,または 6250 bpi です (ただし磁気テープ・ドライブがサポートしている必要があります)。
空の磁気テープに対して密度値を指定しなかった場合,システムはそのテープ・ドライブで使用可能な最大値を省略時の密度として使用します。 6250 bpi,1600 bpi,および 800 bpi で動作するドライブでは,省略時の密度は 6250 bpi となります。
以前に書き込みが行われた磁気テープに対して密度値を指定しなかった場合,システムはボリューム上の最初のレコードの密度を使用します。そのレコードが異常なほど短ければ,密度値の省略時の値は設定されません。
/DENSITY修飾子は,テープ装置 TF には適用できません。
指定できるテープ記録密度の値です。
キーワード 意味 DEFAULT 省略時の密度 800 NRZI 800 BPI 1600 PE 1600 BPI 6250 GRC 6250 BPI 3480 IBM 3480 HPC 39872 BPI 3490E IBM 3480 圧縮 833 DLT TK50: 833 BPI TK50 DLT TK50: 833 BPI TK70 DLT TK70: 1250 BPI 6250 RV80 6250 BPI EQUIVALENT 注意: 上記のキーワードは OpenVMS V7.2 よりも前の TMSCP/TUDRIVER コードでのみ有効です。この他のキーワードは Alpha のみでサポートされています。 TK85 DLT Tx85: 10625 BPI - Cmpt III - Alpha のみ TK86 DLT Tx86: 10626 BPI - Cmpt III - Alpha のみ TK87 DLT Tx87: 62500 BPI - Cmpt III - Alpha のみ TK88 DLT Tx88: (Quantum 4000) - Cmpt IV - Alpha のみ TK89 DLT Tx89: (Quantum 7000) - Cmpt IV - Alpha のみ QIC すべての QIC 装置は装置設定のみ - Alpha のみ 8200 Exa-Byte 8200 - Alpha のみ 8500 Exa-Byte 8500 - Alpha のみ DDS1 Digital Data Storage 1 - 2G - Alpha のみ DDS2 Digital Data Storage 2 - 4G - Alpha のみ DDS3 Digital Data Storage 3 - 8-10G - Alpha のみ DDS4 Digital Data Storage 4 - Alpha のみ AIT1 Sony Advanced Intelligent Tape 1 - Alpha のみ AIT2 Sony Advanced Intelligent Tape 2 - Alpha のみ AIT3 Sony Advanced Intelligent Tape 3 - Alpha のみ AIT4 Sony Advanced Intelligent Tape 4 - Alpha のみ DLT8000 DLT 8000 - Alpha のみ 8900 Exabyte 8900 - Alpha のみ SDLT SuperDLT - Alpha のみ SDLT320 SuperDLT320 - Alpha のみ
テープ密度のキーワードは短縮することはできません。
RXnn ディスク・ドライブでディスクをフォーマットするには, INITIALIZE/DENSITY コマンドを使用します。次のように記録密度を指定して,ディスクをフォーマットします。
キーワード 意味 single RX01 - 8 インチ double RX02 - 8 インチ dd 倍密度: 720K - 3 1/2 インチ hd 高密度: 1.44MB - 3 1/2 インチ ed 拡張高密度: 2.88MB - 3 1/2 インチ
ドライブで初期化するディスクに記録密度を指定しない場合は,そのボリュームが最後にフォーマットされたときの密度のままになります。
注意
倍密度でフォーマットしたディスクは,単密度で再フォーマットしない限り, VAX-11/780 のコンソール・ブロック記憶装置 (RX01 ドライブ) では読み込みまたは書き込みができません。RX33 ディスクは,RX50 ディスク・ドライブでは読み込みまたは書き込みができません。RX50 ディスクは,RX33 ディスク・ドライブで読み込みと書き込みができます。しかし,RX33 ディスク・ドライブでフォーマットはできません。
/DIRECTORIES=エントリ数
この修飾子の効果は,ディスク構造によって異なります。
- ODS-1 については,/DIRECTORIES は指定されたディレクトリ・エントリ数用のスペースを 000000.DIR (MFD) に確保します。
- ODS-2 および ODS-5 については,/DIRECTORIES は MFD の初期サイズを設定します。指定された数を 16 で除算して事前割り当てブロック数を生成します。続いて完全なクラスタ数に切り上げられます。
前へ 次へ 目次 索引