前へ | 次へ | 目次 | 索引 |
この ASSIGN コマンドは,TEMP という論理名を YYY2 という装置に割り当てます。 TEMP は,スーパバイザ・モードで作成され,プロセス論理名テーブルに登録されます。 SHOW LOGICAL コマンドは,論理名の割り当てが実行されたかどうかを確認します。この ASSIGN コマンドでは,TEMP という論理名の最後にコロンが指定されていますが,コマンド・インタプリタは論理名テーブルにその論理名を登録する前に,コロンを削除します。したがって,このあとの DEASSIGN コマンドでは, TEMP だけを指定し,コロンは省略することができます。 SHOW LOGICAL コマンドでは,コロンを省略(たとえば,SHOW LOGICAL TEMP)しなければなりません。
#5 |
---|
$ MOUNT TTT1: MASTER TAPE $ ASSIGN TAPE:NAMES.DAT PAYROLL $ RUN PAYROLL . . . |
この例では,装置 TTT1: にマウントされたボリューム(ラベル名 MASTER)に論理名 TAPE を MOUNT コマンドで割り当てています。 ASSIGN コマンドで,論理装置 TAPE 上のファイル NAMES.DAT に論理名 PAYROLL を割り当てています。したがって,プログラムが論理名 PAYROOL で参照する OPEN 要求を出すと,ボリューム・ラベル名 MASTER というテープ上のファイル NAMES.DATがオープンされます。
#6 |
---|
$ CREATE/NAME_TABLE TABLE1 $ ASSIGN/TABLE=LNM$PROCESS_DIRECTORY TABLE1,- _$ LNM$PROCESS,LNM$JOB,LNM$GROUP,LNM$SYSTEM LNM$FILE_DEV $ ASSIGN/TABLE=TABLE1 - _$ /TRANSLATION_ATTRIBUTES=CONCEALED DKA1: WORK_DISK |
CREATE/NAME_TABLE コマンドは, TABLE1 というプロセス固有の論理名テーブルを作成します。
最初の ASSIGN コマンドにより,ファイル指定または装置名の論理名変換で, TABLE1 が最初に検索されます。これは,TABLE1 が,LNM$FILE_DEV という論理名に対する等価文字列の最初の項目であるためです。論理名 LNM$FILE_DEV は,装置またはファイル指定の変換時に,論理名テーブルの省略時の検索順序を決定します。
2番目の ASSIGN コマンドは,WORK_DISK という論理名を DKA1 という物理装置に割り当て,その論理名を TABLE1 に登録します。この論理名は,隠し属性を持っています。したがって,システム・メッセージには, WORK_DISKという論理名が表示されます。
#7 |
---|
$ ASSIGN/TABLE=LNM$PROCESS/TABLE=LNM$GROUP DKA0: SYSFILES $ SHOW LOGICAL SYSFILES "SYSFILES" = "DKA0:" (LNM$GROUP_000240) |
この ASSIGN コマンドには,矛盾する修飾子が含まれています。このような場合には,最後に指定された修飾子を使用します。したがって,SHOW LOGICAL コマンドからの応答は,論理名がグループ論理名テーブルに登録されたことを示しています。
#8 |
---|
$ ASSIGN/TABLE=LNM$GROUP 'F$TRNLNM("SYS$COMMAND")' TERMINAL %DCL-I-SUPERSEDE, previous value of TERMINAL has been superseded |
この例では,レキシカル関数 F$TRNLNM で論理名 SYS$COMMAND を変換し,その結果を使用して等価名 TERMINAL を定義しています。 ASSIGN コマンドのメッセージは,論理名 TERMINAL が既にグループ論理名テーブルに定義済みであったので,以前のエントリを上書きしたことを示しています。
このコマンドを LOGIN.COM ファイルで使用すれば,各ターミナル・セッション開始時に論理名 TERMINAL が再定義されます。現在のプロセスやそのサブプロセスでは,論理名 TERMINAL を使用して現在の端末にメッセージを出力できます。
#9 |
---|
$ ASSIGN DALLAS::DMA1: DATA |
論理名 DATA にリモート・ノード DALLAS 上の装置 DMA1 を割り当てています。これ以降の論理名 DATA の参照は,リモート・ノード上のディスクに対するものとなります。
#10 |
---|
$ CREATE AVERAGE.COM $ ASSIGN/USER_MODE SYS$COMMAND: SYS$INPUT $ EDIT/EDT AVERAGE.FOR $ FORTRAN AVERAGE $ LINK AVERAGE $ RUN AVERAGE 87 80 90 9999 $ EXIT [Ctrl/Z] $ @AVERAGE.COM |
CREATE コマンドでコマンド・プロシージャ AVERAGE.COM を作成しています。
コマンド・プロシージャ内の ASSIGN コマンドは,/USER_MODE 修飾子で一時的に SYS$INPUT の値を変更しています。EDT エディタが起動されると,ターミナルから入力を受け取ります。このようにして,プログラム AVRAGE.FOR を会話形式で作成または変更できます。
EDT を終了すると,ユーザ・モードの SYS$INPUT は削除され,元の定義に戻ります ( 入力ストリームはコマンド・プロシージャで与えられます )。したがって,プログラム AVERAGE への入力は,コマンド・プロシージャ内から入力されます。
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 プリント・キューに移動します。
論理キューを 1 つの実行キューに割り当てます。 ASSIGN/QUEUE コマンドは,プリント・キューまたはターミナル・キューに対してだけ使用できます。両方のキューに対する管理(M)権が必要です。
ASSIGN/QUEUE キュー名[:] 論理キュー名[:]
キュー名[:]
指定した論理キュー名が割り当てられる,実行キューの名前を指定します。論理キュー,総称キュー,バッチ・キューの指定はできません。論理キュー名[:]
指定した実行キューに割り当てられる論理キューの名前を指定します。
ASSIGN/QUEUE コマンドは,論理キューと実行キューの間に,1 対 1 対応を設定します。論理キューに登録されたジョブは,印刷するために,常に指定された実行キューに登録されます。ASSIGN/QUEUE コマンドを入力すると,論理キューは実行できません。
論理キューを初期化したら,ASSIGN/QUEUE コマンドを使用して論理キューを既存の実行キューと対応付けてください。論理キューを設定するには,次の手順に従ってください。
- INITIALIZE/QUEUE コマンドで,論理キューを初期化します (/START 修飾子は使用しないでください )。
- 既存の実行キューに論理キュー名を割り当てます。
- 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 および 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 セーブ・セットからディスク・ファイルを回復(リストア)する。
- BACKUP セーブ・セットに保存されているディスク・ファイルまたはファイルを,他のディスク・フィルと比較する。
- BACKUP セーブ・セットに保存されているファイルに関する情報を出力装置またはファイルに表示する。
BACKUP を使用してシステム・ディスクをバックアップすることはできません。システム・ディスクはブートストラップを使用しなければなりません。
BACKUP およびシステム・ディスクのバックアップについての詳細は,『OpenVMS システム管理者マニュアル』および『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』あるいはオンライン・ヘルプを参照してください。
BACKUP 入力指定出力指定
コマンド・プロシージャ内でラベルを付けられたサブルーチンへ制御を移します。
CALL ラベル [パラメータ [...]]
ラベル
コマンド行の最初に現われる,1 〜 255 桁の英数字からなるラベル名です。ラベルにブランクを含めることはできません。CALL コマンドが実行されるとき,指定されたラベルに後続するコマンドへ制御が移ります。ラベルは,現在のコマンド・プロシージャの CALL 文の前に,あるいは後に置くことができます。コマンド・プロシージャ内のラベルは,コロン (:) で終了してください。サブルーチンのラベルは一意でなければなりません。
より内側のプロシージャ・レベルのラベルは,外側のプロシージャレベルからはアクセスできません。次の例を参照してください。
$CALL B $A: SUBROUTINE $ B: SUBROUTINE $ ENDSUBROUTINE $ENDSUBROUTINE
この例では,サブルーチン A 内のラベル B は,サブルーチン A より外側ではアクセスできません。
パラメータ [...]
コマンド・プロシージャに渡す 1 つから 8 つのパラメータを指定します。空パラメータは連続する 2 つの引用符("")を用いて指定します。これらのパラメータは,文字列値を入力した順に, P1,P2,..., P8 と 8 つまでのシンボルに割り当てられます。シンボルは,指定されたコマンド・プロシージャの内部だけで有効です。各パラメータは, 1 つまたは複数のスペースで区切ります。パラメータは,英数字または特殊文字を含む文字列値として指定することができますが,次の制約があります。
- コマンド・インタプリタは英字を大文字に変換し,各パラメータを区切るためにスペースを使用します。したがって,スペースや小文字を含むパラメータを渡すためには,パラメータを引用符 (" ") で囲む必要があります
- 最初のパラメータがスラッシュ文字 (/) から始まる場合には,パラメータを二重引用符で囲まなければなりません。
- リテラルとしての引用符,およびスペースを含むパラメータを渡すには,文字列全体を二重引用符で囲み,文字列の中に連続する 2 つの二重引用符を指定します。次の例を参照してください。
$ CALL SUB1 "Never say ""quit"""
制御が SUB1 に移るとき,パラメータ P1 には次の文字列が割り当てられます。
Never say "quit"
文字列に引用符が含まれており,スペースが含まれていない場合には,引用符はそのまま保存され,引用符で囲まれた英字は小文字のまま保存されます。次の例を参照してください。
$ CALL SUB2 abc"def"ghi
制御が SUB2 に移るとき,パラメータ P1 には次の文字列を割り当てられます。
ABCdefGHI
シンボルをパラメータとして使用する場合には,シンボル置換を実行するために,シンボルを一重引用符 (` ') で囲む必要があります。次の例を参照してください。
$ 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 コマンドが検出されるコマンドまでスキップされます。
前へ 次へ 目次 索引