OpenVMS
DCL ディクショナリ


前へ 次へ 目次 索引



ASSIGN/MERGE

1 つのキューからすべてのジョブを削除し,そのジョブを他の既存のキューに登録します。実行中のジョブに対しては影響しません。

両方のキューに対する管理 (M) 権が必要です。


形式

ASSIGN/MERGE ターゲット・キュー[:] ソース・キュー[:]


パラメータ

ターゲット・キュー[:]

ジョブを登録するキューの名前を指定します。

ソース・キュー[:]

新しいキューに移されるジョブが登録されている,キューの名前を指定します。

説明

ASSIGN/MERGEコマンドは,あるキューから待ち状態のジョブを削除して,別のキューに登録します。このコマンドは,ターゲット・キューおよびソース・キュー内の実行中のジョブには影響しません。ソース・キューで現在実行中のジョブは,そのキューで実行を終了します。このコマンドは,バッチ・キューにも使用できますが,一般にプリント・キューに使用します。

ASSIGN/MERGE コマンドは,特にライン・プリンタの動作が不調な場合に便利です。 ASSIGN/MERGE コマンドを入力すると,既存のジョブを別の印刷装置に変更できます。ジョブの損失または中断なしにマージ操作を実行するには, STOP/QUEUE/NEXT コマンドでソース・キューを停止させます。次に,STOP/QUEUE/REQUEUE コマンドを入力して,ソース・キューに入っている現在のジョブをターゲット・キューに移動します (STOP/QUEUE/REQUEUE コマンドでジョブを移動できなかった場合は, STOP/QUEUE/RESET コマンドを使用してキューの制御を回復してください)。 STOP コマンドを入力してから,ASSIGN/MERGE コマンドを入力してください。


#1

$ STOP/QUEUE/NEXT LPB0
$ STOP/QUEUE/REQUEUE=LPA0 LPB0
$ ASSIGN/MERGE LPA0 LPB0

STOP/QUEUE/NEXT コマンドは, LPB0 というキューにおいて他のジョブが実行されないようにします。 STOP/QUEUE/REQUEUE コマンドは, LPB0 で現在実行されているジョブを LPA0 というキューに再登録します。 ASSIGN/MERGEコマンドは,ジョブを LPB0 というプリント・キューから削除し, LPA0 プリント・キューに移動します。


ASSIGN/QUEUE

論理キューを 1 つの実行キューに割り当てます。 ASSIGN/QUEUE コマンドは,プリント・キューまたはターミナル・キューに対してだけ使用できます。

両方のキューに対する管理(M)権が必要です。


形式

ASSIGN/QUEUE キュー名[:] 論理キュー名[:]


パラメータ

キュー名[:]

指定した論理キュー名が割り当てられる,実行キューの名前を指定します。論理キュー,総称キュー,バッチ・キューの指定はできません。

論理キュー名[:]

指定した実行キューに割り当てられる論理キューの名前を指定します。

説明

ASSIGN/QUEUE コマンドは,論理キューと実行キューの間に,1 対 1 対応を設定します。論理キューに登録されたジョブは,印刷するために,常に指定された実行キューに登録されます。

ASSIGN/QUEUE コマンドを入力すると,論理キューは実行できません。

論理キューを初期化したら,ASSIGN/QUEUE コマンドを使用して論理キューを既存の実行キューと対応付けてください。論理キューを設定するには,次の手順に従ってください。

  1. INITIALIZE/QUEUE コマンドで,論理キューを初期化します (/START 修飾子は使用しないでください )。

  2. 既存の実行キューに論理キュー名を割り当てます。

  3. START/QUEUE コマンドで,論理キューを開始します。

論理キューに対して START/QUEUE コマンドを入力すると,ジョブを処理するために論理キューに送ることができます。


#1

$ INITIALIZE/QUEUE/DEFAULT=FLAG=ONE/START LPA0
$ INITIALIZE/QUEUE TEST_QUEUE
$ ASSIGN/QUEUE LPA0 TEST_QUEUE
$ START/QUEUE TEST_QUEUE

この例では,まず,LPA0 というプリント・キューが初期化され開始されます。LPA0 キューは,フラグ・ページが各ジョブの前に印刷されるように設定されています。2 番目の INITIALIZE/QUEUE コマンドは, TEST_QUEUE という論理キューを作成します。ASSIGN/QUEUE コマンドは, LPA0 というプリント・キューに TEST_QUEUE という論理キューを割り当てます。START/QUEUE コマンドは,論理キューを開始します。

#2

$ INITIALIZE/QUEUE/START LPB0

この例では,論理キューが初期化されていないので, ASSIGN/QUEUE コマンドは必要ありません。プリント・キューが初期化されています。つまり,LPB0が,ライン・プリンタの名前です。このように,INITIALIZE/QUEUE/START コマンドを入力したあと, LPB0 にジョブを登録することができます。


ATTACH

現在処理中のプロセスから,指定したプロセスへ制御を移します (元のプロセスは,この後ハイバネートします)。

使用している端末にメールボックスが対応づけられている場合は, ATTACH および SPAWN コマンドは使用できません。


形式

ATTACH [プロセス名]


パラメータ

プロセス名

制御を移す親プロセス,またはサブプロセスの名前を指定します。ここで指定するプロセスは既に存在し,現在処理中のジョブの一部で,現在処理中のプロセスと同じ入力ストリームを共有していなければなりません。ただし現在のプロセス,または /NOWAIT 修飾子を使用して作成したサブプロセスは指定できません。

プロセス名は,1 から 15 文字の英数字で指定します。指定したプロセスに接続できない場合は,エラー・メッセージが表示されます。

プロセス名 パラメータは,/IDENTIFICATION 修飾子と同時に指定できません。


説明

ATTACH コマンドを使用すると,入力ストリームを別のプロセスに接続できます。また,1 つのサブプロセスから別のサブプロセス,または親プロセスに制御を移すことができます。

ATTACH コマンドを入力すると,親プロセス,または "アタッチ元" プロセスはハイバネート状態になり,入力ストリームは指定した "アタッチ先" プロセスに接続されます。 ATTACH コマンドを使用すると,同一ジョブ内のサブプロセス (SPAWN/WAIT または別の ATTACH コマンドによりハイバネート状態になっている ) に,制御を移すことができます。現在処理中のプロセス,現在処理中のジョブの一部ではないプロセス,存在しないプロセスに制御を移すことはできません。これらのプロセスに制御を移そうとすると,エラー・メッセージが表示されます。

また SPAWN/WAIT コマンドと ATTACH コマンドを使用すると,作成したサブプロセスを終了しなくても親プロセスに制御を戻すことができます。詳細は,SPAWN コマンドの説明を参照してください。


修飾子

/IDENTIFICATION=pid

端末制御を移すプロセスのプロセス ID(PID) を指定します。先行の 0 は省略できます。/IDENTIFICATION 修飾子は,プロセス名 と同時に指定できません。

/IDENTIFICATION 修飾子を省略した場合は,プロセス名を指定しなければなりません。


#1

$ ATTACH JONES_2

この例で ATTACH コマンドは,端末制御をサブプロセス JONES_2 に移しています。

#2

$ ATTACH/IDENTIFICATION=30019

この例で ATTACH コマンドは,現在処理中のプロセスから, PID が 30019 であるプロセスに制御を移します。 /IDENTIFICATION 修飾子が指定されているので,プロセス名 は省略されています。


BACKUP

Backup ユーティリティ(BACKUP) を起動し,次のいずれかのバックアップ操作を行います。

BACKUP を使用してシステム・ディスクをバックアップすることはできません。システム・ディスクはブートストラップを使用しなければなりません。

BACKUP およびシステム・ディスクのバックアップについての詳細は,『OpenVMS システム管理者マニュアル』および『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』あるいはオンライン・ヘルプを参照してください。


形式

BACKUP 入力指定出力指定


CALL

コマンド・プロシージャ内でラベルを付けられたサブルーチンへ制御を移します。

形式

CALL ラベル [パラメータ [...]]


パラメータ

ラベル

コマンド行の最初に現われる,1 〜 255 桁の英数字からなるラベル名です。ラベルにブランクを含めることはできません。CALL コマンドが実行されるとき,指定されたラベルに後続するコマンドへ制御が移ります。

ラベルは,現在のコマンド・プロシージャの CALL 文の前に,あるいは後に置くことができます。コマンド・プロシージャ内のラベルは,コロン (:) で終了してください。サブルーチンのラベルは一意でなければなりません。

より内側のプロシージャ・レベルのラベルは,外側のプロシージャレベルからはアクセスできません。次の例を参照してください。


$CALL B 
$A: SUBROUTINE 
$  B: SUBROUTINE 
$  ENDSUBROUTINE 
$ENDSUBROUTINE 

この例では,サブルーチン A 内のラベル B は,サブルーチン A より外側ではアクセスできません。

パラメータ [...]

コマンド・プロシージャに渡す 1 つから 8 つのパラメータを指定します。空パラメータは連続する 2 つの引用符("")を用いて指定します。これらのパラメータは,文字列値を入力した順に, P1,P2,..., P8 と 8 つまでのシンボルに割り当てられます。シンボルは,指定されたコマンド・プロシージャの内部だけで有効です。各パラメータは, 1 つまたは複数のスペースで区切ります。

パラメータは,英数字または特殊文字を含む文字列値として指定することができますが,次の制約があります。

シンボルをパラメータとして使用する場合には,シンボル置換を実行するために,シンボルを一重引用符 (` ') で囲む必要があります。次の例を参照してください。


$ NAME = "JOHNSON" 
$ CALL INFO 'NAME'

一重引用符を使用すると,"JOHNSON" という値が "NAME" というシンボルと置き換えられます。したがって,"JOHNSON" というパラメータが P1 として,サブルーチン INFO に渡されます。


説明

CALL コマンドは,コマンド・プロシージャ内でラベルを付けられたサブルーチンへ制御を移します。CALL コマンドは @ ( プロシージャ実行 ) コマンドに同様に,新しいプロシージャ・レベルを作成します。 CALL コマンドを使用する利点は,プロシージャを処理するためにファイルをオープンしたりクローズする必要がないことです。また,複数のプロシージャは複数のファイルではなく 1 つのファイル中にあるので,CALL コマンドを使用するとプロシージャの管理が簡単です。

CALL コマンドを使用してサブルーチンに制御を移すと,新しいプロシージャ・レベルが作成され,指定された引数の値に P1 から P8 までのシンボルが割り当てられます。EXIT コマンドが実行されるまで,サブルーチンでの実行が続きます。EXIT コマンドが実行されると,制御は CALL コマンドの次のコマンド行に移ります。

プロシージャは,最大で 32 レベルまでネストさせることができます。この中には,コマンド・プロシージャの任意の組み合わせやサブルーチンの呼び出しを含めることができます。ネストしたサブルーチン構造内で定義されたローカル・シンボルやラベルは,@ コマンドでルーチンを起動した場合と同様に扱われます。つまり,ラベルはそれを定義したサブルーチン・レベルでのみ有効です。

より外側のレベルで定義されたローカル・シンボルは,それより内部のネスト・レベルのサブルーチンでは使用できます。つまり,ローカル・シンボルの読み込みはできますが書き込みはできません。より外側のサブルーチン・レベルでローカルなシンボルに値を割り当てると,現在のサブルーチン・レベルに新しいシンボルが作成されます。この時,より外側のプロシージャ・レベルのシンボルは変更されません。

SUBROUTINE および ENDSUBROUTINE コマンドは,サブルーチンの開始および終了を定義します。サブルーチンへのエントリ・ポイントを定義するラベルは,SUBROUTINE コマンドの直前または同一コマンド行上で指定しなければなりません。

1 つのサブルーチンには,1 つのエントリ・ポイントしか含めることができません。サブルーチンは,最初の実行可能文 SUBROUTINE コマンドで開始しなければなりません。プロシージャ内で EXIT コマンドを指定しないと, ENDSUBROUTINE コマンドが EXIT コマンドと同じ処置を行います。

SUBROUTINE コマンドは,実行されるコンテキストに依存する 2 つの異なる処理を行います。CALL コマンドの結果として SUBROUTINE コマンドを実行する場合は,新しいプロシージャ・レベルを開始し,CALL コマンドで指定したように P1 から P8 までのパラメータを定義し,サブルーチンの実行を開始します。 CALL コマンドを使用せずに起動されたプロシージャの実行フローで SUBROUTINE 動詞が検出された場合は,SUBROUTINE 以降のすべてのコマンドは,対応する ENDSUBROUTINE コマンドが検出されるコマンドまでスキップされます。

注意

SUBROUTINE および ENDSUBROUTINE コマンドは,3 文字以下に短縮することはできません。


修飾子

/OUTPUT=ファイル指定

すべての出力を,指定したファイルまたは装置に書き込みます。省略時設定では,出力は現在の SYS$OUTPUT という論理装置に送られ,出力ファイル・タイプは .LIS です。システムからの応答とエラー・メッセージは,指定したファイルと SYS$COMMAND の両方に書き込まれます。 /OUTPUT を指定する場合には,修飾子は CALL コマンドのすぐあとに指定しなければなりません。出力ファイル指定には,ワイルド・カード文字は使用できません。

コマンド・プロシージャからの出力先を変更するには, SYS$OUTPUT の定義を変更することもできます。コマンド・プロシージャの 1 行目として次のコマンドを指定すると,出力は指定したファイルに送られます。


$ DEFINE SYS$OUTPUT filespec 

このプロシージャが終了すると,SYS$OUTPUT は元の等価文字列に戻されます。この方法を使うと,コマンド・プロシージャの実行時に /OUTPUT 修飾子を使用した場合と同じ結果になります。


#1

$ 
$! CALL.COM 
$ 
$! Define subroutine SUB1 
$! 
$ SUB1: SUBROUTINE 
   .
   .
   .
$       CALL SUB2       !Invoke SUB2 from within SUB1 
   .
   .
   .
$       @FILE           !Invoke another procedure command file 
   .
   .
   .
$       EXIT 
$       ENDSUBROUTINE   !End of SUB1 definition 
$! 
$! Define subroutine SUB2 
$! 
$ SUB2: SUBROUTINE 
   .
   .
   .
$       EXIT 
$       ENDSUBROUTINE   !End of SUB2 definition 
$! 
$! Start of main routine. At this point, both SUB1 and SUB2 
$! have been defined but none of the previous commands have 
$! been executed. 
$! 
$ START: 
$       CALL/OUTPUT=NAMES.LOG SUB1 "THIS IS P1" 
   .
   .
   .
$       CALL SUB2 "THIS IS P1" "THIS IS P2" 
   .
   .
   .
$       EXIT            !Exit this command procedure file 
 

このコマンド・プロシージャは,ラベルの付いたサブルーチンへ制御を移すための CALL コマンドの使い方を示しています。この例は,サブルーチンあるいは別のコマンド・ファイルを,サブルーチンとして呼べることを示します。

CALL コマンドは,出力ファイルを NAMES.LOG として,サブルーチン SUB1 を起動します。また,他のユーザにファイルへの書き込みアクセスを認めます。サブルーチン SUB2 は SUB1 に呼ばれます。プロシージャは SUB2 を実行し,次にコマンド・プロシージャ FILE.COM を起動するために @ ( プロシージャ実行)コマンドを用います。

SUB1 のコマンドがすべて実行されると,メイン・プロシージャの CALL コマンドは次に SUB2 を呼び出します。SUB2 が実行されるまで,プロシージャは継続します。


前へ 次へ 目次 索引