日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
OpenVMS
|
目次 | 索引 |
13.18 DCL コマンド・パラメータでの拡張ファイル名の使用 |
ファイル名をパラメータとして使用するコマンド・プロシージャは, ODS-5 環境では異なった結果を生成する場合があります。
解析スタイルは TRADITIONAL から EXTENDED に変更することができます。この項では,EXTENDED に変更した場合に影響を受ける可能性のある,次の分野について説明します。
解析スタイルの切り替えについての詳細は,
第 5.3 節 を参照してください。
インダイレクト・コマンド・プロシージャが使用されている場合には,一部のプロシージャの引数を引用符で囲む必要がある場合があります。
次の例は,同じコマンド・ファイル SS.COM を使用した場合の, TRADITIONAL 解析スタイルと EXTENDED 解析スタイルの出力の違いを示しています。
13.18.1 コマンド・プロシージャのファイル指定
$ create ss.com $ if p1 .nes. "" then write sys$output "p1 = ",p1 $ if p2 .nes. "" then write sys$output "p2 = ",p2 $ if p3 .nes. "" then write sys$output "p3 = ",p3 |
$ set process/parse_style=traditional $ @ss ^ parg2 parg3 p1 = ^ p2 = PARG2 p3 = PARG3 |
サーカンフレックス (^) は,最初の引数であり ( エスケープ文字ではない ),プロシージャ引数 p2 および p3 の大文字と小文字の区別が保存されていないことに注意してください。
$ set process/parse_style=extended $ @ss ^ parg2 parg3 p1 = ^ PARG2 p2 = PARG3 |
コマンド・プロシージャでサーカンフレックス (^) が,スペースを引数の区切り文字としてではなくリテラル文字として識別するエスケープ文字として認識されている
ことと,"^ PARG2" が最初の引数であることに注意してください。大文字と小文字の区別は保存されません。
$ @ss "^" parg2 parg3 p1 = ^ p2 = PARG2 p3 = PARG3 |
サーカンフレックス (^) は引用文字列の中にあるため,エスケープ文字としては処理されません。
$ @ss "^" parg2 "parg3" p1 = ^ p2 = PARG2 p3 = parg3 |
プロシージャ引数 p3 の大文字と小文字の区別が保存されていることに注意してください。
$ set process/parse_style=traditional $ @ss^ parg2 parg3 p1 = ^ p2 = PARG2 p3 = PARG3 |
$ set process/parse_style=extended $ @ss^ parg2 parg3 -RMS-E-FNF, file not found |
DCL は,ファイル指定の大文字と小文字の区別を保存しようとします。実際にファイル指定の大文字と小文字の区別が保存されるのは,
Command Definition Utility (CDU) を使用して定義されたコマンドに限られます。 DCL は,$FILE 解析タイプを持つコマンド定義ファイル (.CLD) の中で定義されている項目の大文字と小文字の区別を保存します。
詳細は,『OpenVMS Command Definition, Librarian, and Message Utilities Manual』を参照してください。
一重引用符ではなくアンパサンド (&) による置換を使用して,従来型の解析の際に大文字と小文字の区別を保存することができます。
次の従来型の解析の例は,文字列の大文字と小文字の区別を変更する一連のコマンドを示しています。
13.18.2 大文字と小文字の区別の保存と $FILE
13.18.3 アンパサンドと一重引用符の置換
$ set process/parse_style=traditional $ x = "string" $ define y 'x' $ sho log y "Y" = "STRING" (LNM$PROCESS_TABLE) $ define y &x %DCL-I-SUPERSEDE, previous value of Y has been superseded $ sho log y "Y" = "string" (LNM$PROCESS_TABLE) |
アンパサンド (&) を使用することにより,変数 x に割り当てられた文字列の大文字と小文字の区別が保存されていることに注意してください。
一重引用符による置換は,コマンド行が大文字に設定される前に実行され,アンパサンドによる置換は,コマンド行が大文字に設定された後で実行されます。
次の拡張解析機能の例は,同じ一連のコマンドを示しています。
$ set process/parse_style=extended $ define y 'x' %DCL-I-SUPERSEDE, previous value of Y has been superseded $ sho log y "Y" = "string" (LNM$PROCESS_TABLE) $ define y &x %DCL-I-SUPERSEDE, previous value of Y has been superseded $ sho log y "Y" = "string" (LNM$PROCESS_TABLE) |
変数 y に割り当てられた文字列はどちらも小文字で返されていることに注意してください。これは,DEFINE コマンドが,大文字と小文字の区別を保存する $FILE を使用しているために発生します。
このような特徴を持つことから,アンパサンドによる置換は,解析スタイルが TRADITIONAL に設定されている場合でも EXTENDED ファイル名を指定するために使用することができます。次に例を示します。
$ set process/parse=extended $ cre file^ name.doc Contents of an ODS5 file Exit $ set process/parse=traditional $ a = "file^ name.doc" $ type file^ name.doc %DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters \^NAME\ $ type 'a' %DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters \^NAME\ $ type &a Contents of an ODS5 file |
注意 アンパサンドによる置換は,フォーリン・コマンドには使用できません。 |
目次 | 索引 |
|