日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
@ (プロシージャの実行) |
コマンド・プロシージャを実行します。または,コマンド・インタプリタに対して,特定のファイルまたは装置からコマンド入力を読み込むよう要求します。
@ ファイル指定 [パラメータ[,...]]
ファイル指定
前のコマンドに対する入力が読み込まれる装置またはファイル,あるいは実行されるコマンド・プロシージャを指定します。省略時のファイル・タイプは .COM です。アスタリスク (*) やパーセント記号 (%) などのワイルドカード文字を,ファイル指定で使用することはできません。パラメータ[,...]
コマンド・プロシージャに渡される 1 つから 8 つの省略可能なパラメータを指定します。これらのパラメータには,文字列値を入力した順に (P1, P2, ... P8) の 8 つのシンボルが割り当てられます。DCL_CTLFLAGS のビット 3 を 1 に設定すると, 1 から 16 のオプション・パラメータをコマンド・プロシージャに渡すことができます。シンボル (P1, P2, ... P16) には,入力した順に文字列値が割り当てられます。 DCL_CTLFLAGS のビット 3 をクリアすると,省略時のパラメータ (すなわち P1, P2, ... P8) が設定されます。
シンボルは,指定されたコマンド・プロシージャの内部でのみ有効です。各パラメータは,1 つまたは複数の空白で区切ります。空パラメータを指定するには,連続する 2 つの引用符 ("") を使用します。パラメータには,英数字または特殊文字を含む文字列値を指定することができます。ただし次の制約があります。
- コマンド・インタプリタは英字を大文字に変換し,各パラメータの区切り文字に空白を使用します。空白や小文字を含むパラメータを渡すには,パラメータを引用符で囲む必要があります。
- 最初のパラメータがスラッシュ (/) から始まる場合には,パラメータを引用符 (" ") で囲まなければなりません。
- リテラルとしての引用符や空白を含むパラメータを渡すには,文字列全体を二重引用符で囲み,文字列の中で連続する 2 つの二重引用符を指定します。たとえば,コマンド・プロシージャ TEST.COM が次のコマンド行を含んでいたとします。
$ WRITE SYS$OUTPUT P1
この時,DCL プロンプト ($) に対して次のコマンドを入力します。
$ @TEST "Never say ""quit"""
TEST.COM というプロシージャを実行すると,パラメータ P1 には次の文字列が割り当てられます。
Never say "quit"
文字列に引用符が含まれており,空白が含まれていない場合には,引用符は文字列の中でそのまま保存され,引用符で囲まれた英字は小文字のまま保存されます。たとえば,DCL プロンプトに対して次のコマンドを入力します。
$ @TEST abc"def"ghi
TEST.COM というプロシージャを実行すると,パラメータ P1 には次の文字列が割り当てられます。
ABC"def"GHI
シンボルをパラメータとして使用する場合には,シンボル置換を実行するためにシンボルを一重引用符 (' ') で囲む必要があります。次の例を参照してください。
$ NAME = "JOHNSON" $ @INFO 'NAME'
一重引用符を使用すると,"JOHNSON" という値が NAME というシンボルと置き換えられます。したがって,"JOHNSON" というパラメータが,P1 として INFO.COM に渡されます。
@ コマンドは,以下を含むコマンド・プロシージャを実行する際に使用します。
- DCL コマンド行,またはデータ,あるいはその両方
- 特定のコマンド行に対する修飾子,またはパラメータ,あるいはその両方
コマンド,またはデータ,あるいはその両方を含むコマンド・プロシージャを実行するには,コマンド行の最初に @ コマンドを入力し,その次にコマンド・プロシージャ・ファイルの名前を指定します。コマンド・プロシージャには DCL コマンド,および現在実行中のコマンドまたはプログラムへの入力データを含めることができます。コマンド・プロシージャ内のすべての DCL コマンドは,ドル記号 ($) で始めなければなりません。コマンド行がハイフン (-) により継続している場合は,その継続行はドル記号から始まらなくても構いません。
コマンド・プロシージャ中で,行の最初にドル記号がなく,継続行でもないコマンド行は,現在実行中のコマンドまたはプログラムへの入力データとして扱われます。DECK コマンドを使用すると,データのレコード位置にドル記号があることを指定できます。
コマンド・プロシージャ内に,他のコマンド・プロシージャを実行する @ コマンドを含めることもできます。トップ・レベルのコマンド・プロシージャも含め,最大で 32 回までコマンド・プロシージャをネストさせることができます。SUBMIT コマンドを使用する,またはシステム・カード・リーダにコマンド・プロシージャを含むカード・デックを置くことにより,コマンド・プロシージャをバッチ・ジョブとしてキューに登録することもできます。
特定のコマンド行に対する修飾子,またはパラメータ,あるいはその両方を含むコマンド・プロシージャを実行するには,通常,コマンド行で修飾子またはパラメータを指定する位置に @ コマンドを置きます。次に,修飾子またはパラメータを含むコマンド・プロシージャ・ファイル名を指定します。
コマンド・プロシージャ・ファイルがコマンドに対するパラメータで始まる場合は,@ コマンドの前に空白が必要です。次の例を参照してください。
$ CREATE TEST.COM TIME [Ctrl/Z] $ SHOW @TEST 14-DEC-2001 17:20:26
反対に,コマンド・プロシージャ・ファイルがコマンドに対する修飾子で始まる場合は,@ コマンドの前に空白を入れては いけません。
$ CREATE TEST_2.COM /SIZE [Ctrl/Z] $ DIR@TEST_2 Directory WORK$:[SCHEDULE] JANUARY.TXT;8 14-DEC-2001 15:47:45.57 FEBRUARY.TXT;7 14-DEC-2001 15:43:16.20 MARCH.TXT;6 14-DEC-2001 11:11:45.74 . . . Total of 11 files.
コマンド・プロシージャ・ファイルにパラメータ,修飾子,あるいはその両方が含まれている場合は,コマンド行をドル記号で始めては いけません。@ ファイル指定に続くコマンド行のデータは,プロシージャに対するパラメータとして扱われます。
/OUTPUT=ファイル指定
コマンド・プロシージャの出力を書き込むファイル名を指定します。省略時の設定では,出力は現在の SYS$OUTPUT 装置に書き込まれます。省略時の出力ファイル・タイプは .LIS です。アスタリスク (*) およびパーセント記号 (%) ワイルドカード文字を,ファイル指定で使用することはできません。システムからの応答とエラー・メッセージは,指定したファイルと SYS$COMMAND の両方に書き込まれます。/OUTPUT 修飾子を指定する場合は,コマンド・プロシージャのファイル指定のすぐあとに修飾子を指定しなければなりません。そのように指定しないと,/OUTPUT 修飾子はコマンド・プロシージャに渡されるパラメータとして解釈されます。SYS$OUTPUT の定義を変更すれば,コマンド・プロシージャからの出力先を変更することができます。コマンド・プロシージャの 1 行目として次のコマンドを指定すると,出力は指定したファイルに送られます。
$ DEFINE SYS$OUTPUT ファイル指定
このプロシージャが終了すると,SYS$OUTPUT はもとの等価文字列に戻されます。この方法では,コマンド・プロシージャを実行するときに /OUTPUT 修飾子を使用した場合と同じ結果になります。
#1 |
---|
$ CREATE DOFOR.COM $ ON WARNING THEN EXIT $ IF P1.EQS."" THEN INQUIRE P1 FILE $ FORTRAN/LIST 'P1' $ LINK 'P1' $ RUN 'P1' $ PRINT 'P1' [Ctrl/Z] $ @DOFOR AVERAGE |
この例では,DOFOR.COM というコマンド・プロシージャが示されています。このコマンド・プロシージャは,プログラムをコンパイルし,リンクし,実行するために,それぞれ FORTRAN コマンド,LINK コマンド,および RUN コマンドを実行します。ON コマンドはコマンドの実行結果が警告状態やエラー状態である場合には,プロシージャの実行を継続しないことを要求しています。
DOFOR.COM を実行するときに,FORTRAN プログラムのファイル指定をパラメータ P1 として渡すことができます。プロシージャを実行するときに P1 の値を指定しなかった場合には,INQUIRE コマンドがターミナルにプロンプト・メッセージを表示し,そのプロンプトに対して入力した値が,シンボル P1 に割り当てられます。この例では,ファイル名 AVERAGE が P1 に割り当てられています。FORTRAN コマンド, LINK コマンド,RUN コマンド,および PRINT コマンドには,それぞれ省略時のファイル・タイプが設定されているため,ファイル・タイプは含まれていません。
#2 |
---|
$ @MASTER/OUTPUT=MASTER.LOG |
このコマンドは,MASTER.COM という名前のプロシージャを実行します。出力はすべて MASTER.LOG ファイルに書き込まれます。
#3 |
---|
$ CREATE FILES.COM *.FOR, *.OBJ [Ctrl/Z] $ DIRECTORY @FILES |
この例は FILES.COM コマンド・プロシージャを示しています。このファイルには,DCL コマンド行へのパラメータが含まれています。ファイル全体が DCL により,コマンド入力として処理されます。このプロシージャを DIRECTORY コマンドの後で実行して,現在の省略時のディレクトリ内の FORTRAN ソース・ファイルとオブジェクト・ファイルの一覧を表示させています。
#4 |
---|
$ CREATE QUALIFIERS.COM /DEBUG/SYMBOL_TABLE/MAP/FULL/CROSS_REFERENCE [Ctrl/Z] $ LINK SYNAPSE@QUALIFIERS |
この例では,LINK コマンドに対する修飾子を含んでいる QUALIFIERS.COM というコマンド・プロシージャが示されています。LINK コマンドを入力する時に,リンクするファイルのファイル指定のすぐ後に,コマンド・プロシージャを指定します。この時,ファイル指定と @ コマンドの間には空白を入れてはいけません。
#5 |
---|
$ CREATE SUBPROCES.COM $ RUN 'P1' - /BUFFER_LIMIT=1024 - /FILE_LIMIT=4 - /PAGE_FILES=256 - /QUEUE_LIMIT=2 - /SUBPROCESS_LIMIT=2 - 'P2' 'P3' 'P4' 'P5' 'P6' 'P7' 'P8' [Ctrl/Z] $ @SUBPROCES LIBRA /PROCESS_NAME=LIBRA |
この例は,SUBPROCES.COM というコマンド・プロシージャを示しています。このプロシージャは,イメージを実行するためのサブプロセスを生成する RUN コマンドを実行し,また,サブプロセス生成のためのクォータを定義する修飾子を含んでいます。実行するイメージ名は,パラメータ P1 で渡されます。パラメータ P2 から P8 は,追加する修飾子を指定するために使用できます。
この例では,P1 に LIBRA というファイル名が割り当てられます。これがサブプロセスで実行するイメージの名前です。P2 には /PROCESS_NAME=LIBRA という修飾子が割り当てられます。これが RUN コマンドに追加される修飾子です。
#6 |
---|
$ CREATE EDOC.COM $ ASSIGN SYS$COMMAND: SYS$INPUT $ NEXT: $ INQUIRE NAME "File name" $ IF NAME.EQS."" THEN EXIT $ EDIT/TPU 'NAME'.DOC $ GOTO NEXT [Ctrl/Z] $ @EDOC |
この EDOC.COM というプロシージャは,EVE エディタを起動します。編集セッション終了時に,ラベル NEXT でプロシージャはループします。各ループにおいて,編集するファイル名を要求します。省略時のファイル・タイプは .DOC です。INQUIRE コマンドへの応答に空行が入力されると,EXIT コマンドでプロシージャが終了します。
ASSIGN コマンドで,プロシージャ実行中に SYS$INPUT の等価名を変更しています。この変更により,EVE エディタがコマンド・プロシージャ・ファイルではなく,ターミナルから入力データを読むことができます。SYS$INPUT が変更されない場合には,省略時の入力データ・ストリームはコマンド・プロシージャ・ファイルになります。コマンド・プロシージャ終了時に,SYS$INPUT は解除され元の設定に戻ります。
#7 |
---|
! PEOPLE.DAT ! A set of data with embedded key qualifiers for the SORT command. ! ! Usage: SORT@PEOPLE.DAT ! /KEY=(POS:10,SIZE:10) sys$input people.out Fred Flintstone 555-1234 Barney Rubble 555-2244 Wilma Flintstone 555-1234 Betty Rubble 555-2244 George Slate 555-8911 Dino Dinosaur 555-1234 $! $ purge people.out $ type people.out |
ソートされた名簿を PEOPLE.OUT ファイルに作成し,それを表示します。この例では,DCL コマンドの中間で "@" を使用した場合に, DCL がそのファイル全体をコマンド入力として処理することを示します。
#8 |
---|
$ CREATE SUBPROCES.COM $ RUN 'P1' - /BUFFER_LIMIT=1024 - /FILE_LIMIT=4 - /PAGE_FILES=256 - /QUEUE_LIMIT=2 - /SUBPROCESS_LIMIT=2 - 'P2' 'P3' 'P4' 'P5' 'P6' 'P7' 'P8' 'P9' 'P10' 'P11' 'P12' 'P13' 'P14' 'P15' 'P16' [Ctrl/Z] $ @SUBPROCES LIBRA /PROCESS_NAME=LIBRA |
この例のコマンド・プロシージャ SUBPROCES.COM は,イメージを実行するためのサブプロセスを生成する RUN コマンドを実行し,また,サブプロセス生成のためのクォータを定義する修飾子を含んでいます。実行するイメージ名は,パラメータ P1 で渡されます。パラメータ P2 から P16 は,追加する修飾子を指定するために使用できます。これは DCL_CTLFAGS のビット 3 が 1 に設定されている場合に適用されます。
この例では,P1 に LIBRA というファイル名が割り当てられます。これがサブプロセスで実行するイメージの名前です。P2 には /PROCESS_NAME=LIBRA という修飾子が割り当てられます。これが RUN コマンドに追加される修飾子です。
目次 | 索引 |
|