日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
はじめよう!日本語 OpenVMS
この章では DCL コマンドを一定の順序で繰り返し実行することがしばしばあります。このように,決まった手順のコマンドを繰り返し実行する場合,コマンド・プロシージャを使うと便利です。 コマンド・プロシージャとは,DCL コマンドと DCL コマンドで使用されるデータ行を 1 つのファイルにしたものです。コマンド・プロシージャを実行することは,その中のコマンド列を実行するのと同じことです。 関連資料
コマンド・プロシージャはエディタを使用して作成します。コマンド・プロシージャの作成規則は次のとおりです。
作成したコマンド・プロシージャを実行するには次のように入力します。
コマンド・プロシージャ・ファイルがデフォルト・ディレクトリにない場合は,ディレクトリ指定も必要です。 コマンド・プロシージャは,コマンド・プロシージャ・ファイルのコマンドを先頭から順番に実行します。また,1 つのコマンドの実行が完全に終わってから次のコマンドに進みます。
デフォルトでは,コマンド・プロシージャ実行中に,コマンドそのものは画面に表示されません。実行コマンドを表示するには,次のようにします。
実行コマンドの表示をしない場合は,次のようにします。
これらのコマンドは,ターミナルからコマンドとして入力できますが,コマンド・プロシージャの中に含めることもできます。
ABC.FOR というプログラムをコンパイル,リンク,実行するコマンド・プロシージャ (TEST.COM) の例を次に示します。
TEST.COM
コマンド実行の状態を確認できるように,SET VERIFY を実行します。
TEST.COM 実行します。
各コマンドを表示しながら自動的に実行します。
ファイル指定が異なるためにプログラムごとに別々のコマンド・プロシージャを作るのは不便です。そこで,コマンド・プロシージャにパラメータを使用して,実行時にファイル名を与えることができます。 パラメータの使用には次の規則があります。
ソース・プログラム名をパラメータとして,コンパイル,リンク,実行をするコマンド・プロシージャ (TEST1.COM) の例を次に示します。
TEST1.COM
コマンド実行の状態を確認できるように SET VERIFY を実行します。
パラメータとして ABC を指定して TEST1.COM を実行します。
各コマンドを表示しながら自動的に実行します。
ログインすると自動的に実行されるプロシージャを, ログイン・プロシージャといいます。 キーの定義やコマンド列の置き換えは,ログアウトすると無効になってしまいます。同じ定義や置き換えを使いたい場合は,ログイン時に再定義しなければなりません。キーの定義やコマンド列の置き換えをログイン・プロシージャに入れておけば,自動的に定義されるので,ログインするたびに定義し直す手間が省けます。 ログイン・コマンド・プロシージャには,通常は次のようなコマンドを盛り込みます。
ログイン・プロシージャのファイル名とファイル・タイプは,通常は,LOGIN.COM です。このファイルは,ログイン・ディレクトリに置かなければなりません。エディタを使用して作成します。 ログイン・プロシージャを作成する際は,次の規則に従ってください。
ログイン・プロシージャの例 (LOGIN.COM) を示します。
LOGIN.COM の内容を表示します。
LOGIN.COM
この例では,キーを定義 (SHOW DEFAULT, SET DEFAULT) しています。また,シンボルも定義 (PR == "PRINT/QUEUE=PRINTER1") しています。そして,処理の実行を終了するために EXIT としています。 ( 感嘆符 (!) に続く文字列は注釈 ( コメント ) です。)
画面にプロンプト・メッセージを出力し,ユーザが入力した文字列をシンボルに割り当てるには次のようにします。 (小文字は大文字に変換されます。)
次の例 HELP.COM では,HELP で画面に出される内容をファイルに出力します。その際,作ったファイルをプリンタへ出力するか尋ね,ユーザが Y と入力した場合はプリンタ出力します。 (感嘆符 (!) に続く文字列は注釈 (コメント) です。) HELP.COM
DCL コマンド列以外の文字列をシンボルに定義してシンボルを使用することができます。たとえば,シンボルにディレクトリ名を定義し,コマンド列の一部としてそのシンボルを用いることができます。 ただし,シンボルを DCL コマンド行の先頭以外で使う場合には,次のように引用符 (') で囲むことが必要です。
次の例では,実行時にパラメータが指定されなかった時は,P1 を入力するように促します。( コマンド行の先頭以外でシンボルを使う場合には,引用符 (') で囲みます。) DEFAULT.COM
SET VERIFY を実行します。
DEFAULT.COM を実行し,P1 として WORK を指定します。
P1 が WORK に置き変わって実行されます。
シンボルとコマンド・プロシージャを組み合わせることもできます。 次の例では,表示を整えるために空白行をターミナルに出力し, It was fun working with you. Have a nice day !というメッセージをターミナルに出力します。次に表示を整えるために空白行をターミナルに出力し,ログアウトします。 LOGOUT.COM
BYE というシンボル名に,コマンド・プロシージャを起動するコマンド文字列を定義します。
シンボル BYE を実行します。コマンド・プロシージャ LOGOUT.COM が起動し,ターミナルに空白行が出力されます。
ターミナルにメッセージが出力され,次に空白行が出力されます。
コマンド・プロシージャ LOGOUT.COM の最終行が実行され,ログアウトします。
ログイン・コマンド・プロシージャを起動しないでログインするには,ユーザ名を入力するときに /NOCOMMAND という修飾子をつけます。
また,次のようにして,別のコマンド・プロシージャ・ファイルをログイン・コマンド・プロシージャとして指定することもできます。
IF コマンドを使うことで,条件によって処理を変えることができます。次のコマンド・プロシージャは,入力した数値が負数の場合に警告を表示します。
IF コマンドの形式は次の通りです。
条件式が成り立つ場合 ( 真の場合 ) に THEN の後のコマンドが実行されます。THEN の後に書くことのできるコマンドは 1 行につき 1 つだけです。 複数のコマンドを書く場合には次のように書きます。条件式が成り立つ場合は,THEN と ENDIF で挾まれたコマンドが実行されます。
条件式が成り立たない時にコマンドを実行させたい場合には, ELSE を使います。条件式が成り立たなかったとき,ELSE と ENDIF ではさまれたコマンドが実行されます。
THEN と ELSE の両方を使うこともできます。条件式が成り立つ場合には,THEN と ELSE に挾まれたコマンドが実行されます。条件式が成り立たなかった場合には ELSE と ENDIF に挾まれたコマンドが実行されます。
コマンドが 1 つしかない場合は,次のように短縮して書くこともできます。
条件式の代表的な書き方は,2 つの数値や文字列の比較によるものです。 2 つの数値や文字列 (またはそれらを含んだシンボル) を比較演算子で結びます。 たとえば,I .LT. 0 は,「シンボル I が 0 より小さいとき」という意味です。 .LT. はその左辺と右辺を数値として比較します。左辺が右辺より小さければ真,そうでなければ偽の値を持ちます。 DCL の数値比較演算子には次のようなものがあります。
文字列の比較は文字列用の比較演算子を使用します。文字列の大小の比較は ASCII コードで比較されます。
条件式を .AND. または .OR. でつなぐと複数の条件式を組み合わせることもできます。次のようにします。
IF-THEN-ELSE-ENDIF の形式でも同じように書くことができます。たとえば,次のコマンド・プロシージャでは,1 〜 9 以外の数字を入力した時に警告を出します。
条件式が複雑でわかりにくい時は,次のように括弧 ( ) で括って整理しましょう。
|
|