前へ | 次へ | 目次 | 索引 |
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 が実行されるまで,プロシージャは継続します。
RUN コマンドまたは $SCHDWK システム・サービスでスケジューリングされたウェイクアップ要求を含め,指定したプロセスに対するウェイクアップ要求を取り消します。次のいずれか 1 つが必要です。
- プロセスの所有権
- 所有権はないが同一グループ内のプロセスに対してスケジューリングされたウェイクアップ要求を取り消すための GROUP 特権
- システム上のすべてのプロセスに対してスケジューリングされたウェイクアップ要求を取り消すための WORLD 特権
CANCEL [[ノード名::]プロセス名]
ノード名::
指定したプロセスが実行中のノードの名前を指定します。現在のプロセスとは異なる OpenVMS Cluster システム上のノード名を指定することはできません。
プロセス名
ウェイクアップ要求を取り消したいプロセスの名前を指定します。プロセス名には,15 文字までの英数字を使用できます。ここで指定するプロセスは,現在のプロセスと同一グループ内のプロセスでなければなりません。
CANCEL コマンドは,指定したプロセスに対してスケジューリングされたウェイクアップ要求を取り消します。CANCEL コマンドは,指定したプロセスを削除することはありません。 CANCEL コマンドを発行した時に,そのプロセスでイメージを実行している場合は,イメージの実行終了後,そのプロセスは終了するのではなく,ハイバネートします。
ウェイクアップ要求が取り消されたハイバネートしているプロセスを削除するには, STOP コマンドを使用します。SHOW PROCESS コマンドで /SUBPROCESS 修飾子を指定すると,サブプロセスが削除されたかどうか確認できます。
ローカル・プロセス名は,リモート・プロセス名と似ています。そのため ATHENS::SMITH と指定すると,システムは,ノード ATHENS のプロセス SMITH をチェックする前に,ローカル・ノードでプロセス ATHENS::SMITH をチェックします。
/IDENTIFICATION=pid 修飾子を使用して,プロセス名を指定することもできます。 /IDENTIFICATION 修飾子とともに プロセス名 パラメータを使用すると,修飾子がパラメータを上書きします。 プロセス名 パラメータも /IDENTIFICATION 修飾子も指定しないと,CANCEL コマンドは現在のプロセス ( つまり CANCEL コマンドを発行するプロセス ) に対してスケジューリングされているウェイクアップ要求を取り消します。
/IDENTIFICATION=pid
プロセス識別番号 (PID) でプロセスを識別します。 PID を指定する時,先行の 0 は省略できます。
#1 |
---|
$ CANCEL CALENDAR |
この例で CANCEL コマンドは,プロセス名が CALENDAR であるプロセスに対するウェイクアップ要求を取り消します。 STOP コマンドで削除されるまで,CALENDAR プロセスはハイバネートします。
#2 |
---|
$ RUN/SCHEDULE=14:00 STATUS %RUN-S-PROC_ID, identification of created process is 0013012A . . . $ CANCEL/IDENTIFICATION=13012A |
この例で RUN コマンドは,イメージ STATUS を実行するプロセスを作成します。このプロセスはハイバネートし,14:00 に実行を開始するようスケジューリングされています。このプロセスが STATUS を実行する前に, CANCEL コマンドはウェイクアップ要求を取り消しています。
#3 |
---|
$ RUN/PROCESS_NAME=LIBRA/INTERVAL=1:00 LIBRA %RUN-S-PROC_ID, identification of created process is 00130027 . . . $ CANCEL LIBRA $ STOP LIBRA |
この例の RUN コマンドは,LIBRA という名前のサブプロセスを作成して,イメージ LIBRA.EXE を 1 時間に 1 回実行します。
次に CANCEL コマンドでウェイクアップ要求を取り消します。このプロセスは存在しつづけますが,STOP コマンドで削除するまで,ハイバネートします。
OPEN コマンドによりオープンされているファイルをクローズし,関連する論理名を解除します。
CLOSE 論理名[:]
論理名[:]
OPEN コマンドによりファイルがオープンされた時に,そのファイルに割り当てる論理名を指定します。
コマンド・レベルでの読み込みまたは書き込みのためにオープンされているファイルは,CLOSE コマンドで終了するまで,またはそのプロセスが終了するまで,オープンされています。ファイルをオープンしたコマンド・プロシージャが,オープンしたファイルをクローズせずに終了すると,ファイルはオープンなままです。コマンド・インタプリタが自動的にそのファイルをクローズさせることはありません。
/DISPOSITION=オプション
ファイルをクローズするときにどのような操作を実行するかを指定します。オプションは,次のとおりです。
DELETE ファイルを削除する。 KEEP (default) ファイルを保存する。 ファイルをプリントする。 SUBMIT ファイルをキューに登録する。
/ERROR=ラベル
ファイルをクローズする時にエラーが発生した場合に,制御を戻すコマンド・プロシージャ内のラベルを指定します。この修飾子に対して指定されているエラー・ルーチンは, ON コマンドに指定されている動作より優先します。エラーが発生した時に,指定したラベルに正しく制御が渡されると,グローバル・シンボル $STATUS にエラーの種類を示すコードが設定されます。/LOG (省略時の設定)
/NOLOG
DCL でオープンされていないファイルをクローズしようとすると,警告メッセージを生成します。 /ERROR 修飾子を指定した場合には,/LOG 修飾子は無効になります。 DCL でファイルがオープンされていない場合には,エラー分岐が実行され,メッセージは表示されません。
#1 |
---|
$ OPEN/READ INPUT_FILE TEST.DAT $ READ_LOOP: $ READ/END_OF_FILE=NO_MORE INPUT_FILE DATA_LINE . . . $ GOTO READ_LOOP $ NO_MORE: $ CLOSE INPUT_FILE |
OPEN コマンドは,TEST.DAT というファイルをオープンし,そのファイルに INPUT_FILE という論理名を割り当てます。 READ コマンドの /END_OF_FILE 修飾子は,ファイルの最後に到達したときに,コマンド・インタプリタが NO_MORE というラベルの行に制御を渡すことを要求しています。CLOSE コマンドは,入力ファイルをクローズします。
#2 |
---|
$ @READFILE [Ctrl/Y] $ STOP $ SHOW LOGICAL/PROCESS . . . "INFILE" = "_DB1" "OUTFILE" = "_DB1" $ CLOSE INFILE $ CLOSE OUTFILE |
CTRL/Y は,READFILE.COM というコマンド・プロシージャの実行に割り込みをかけます。そのあと,STOP コマンドが,プロシージャを停止します。 SHOW LOGICAL/PROCESS コマンドは,プロセス論理名テーブルに現在登録されている名前を表示します。このコマンドで表示される名前には,READFILE.COM プロシージャの中で, OPEN コマンドによって割り当てられた INFILE と OUTFILE という論理名も含まれています。
CLOSE コマンドは,これらのファイルをクローズし,論理名の割り当てを解除します。
ユーザが使用している物理端末を,他のプロセスと接続している仮想端末と接続します。ユーザは,ユーザの利用者識別コード(UIC) を持つプロセスに接続している仮想端末に接続しなければなりません。他の物理端末は,仮想端末に接続しません。
CONNECT 仮想端末名
仮想端末名
ユーザが接続している仮想端末の名前を指定します。仮想端末名は,文字 VTA で始まります。 SHOW USERS コマンドを実行すると,プロセスに接続している仮想端末の名前が表示されます。
サブプロセスを作成する SPAWN コマンドや,サブプロセスに接続する ATTACH コマンドとは異なり, CONNECT コマンドは別のプロセスに接続します。通信回線を使用しているシステムにログ・インしている場合,CONNECT コマンドは便利です。回線上にノイズがありキャリア・シグナルを失った場合,ユーザのプロセスは終了しません。再度ログ・インした後に元のプロセスに再接続し, 2 つ目のプロセスからログ・アウトすることができます。
CONNECT コマンドを使用するためには, OpenVMS Alpha システム上で System Manager ユーティリティ (SYSMAN),および OpenVMS VAX システム上で System Generation ユーティリティ (SYSGEN) で,仮想端末機能が許可されていなければなりません。
利用者が使用しているシステムで仮想端末機能が許可されている場合は, SET TERMINAL/DISCONNECT/PERMANENT コマンドを使用して,特定の物理端末の仮想端末属性を許可することができます。この属性を許可すると,ある利用者がその物理端末にログ・インする時に仮想端末が作成されます。物理端末は仮想端末に接続され,仮想端末はプロセスに接続されます。
新しい仮想端末に対しては,まず TTY_DEFCHAR2 システム・パラメータの TT2$V_DISCONNECT ビットを設定し,システムを再ブートする必要があります。 ttdriver を使用して仮想装置 VTA0 を作成すると,これらの処理が行われます。次の例を参照してください。Alpha システムの場合は,次のように入力します。
$ RUN SYS$SYSTEM:SYSMAN SYSMAN> IO CONNECT/NOADAPTER/DRIVER=SYS$LOADABLE_IMAGES:SYS$TTDRIVER VTA0:
VAX システムの場合は,次のように入力します。
$ RUN SYS$SYSTEM:SYSGEN SYSGEN> CONNECT /NOADAPTER/DRIVER=TTDRIVER VTA0:
/NOLOGOUT 修飾子を指定していない場合は,物理端末と仮想端末との接続が切断されると,ユーザは現在のプロセスからログ・アウトしてしまいます ( またこのプロセスで実行中のイメージは停止します )。
/NOLOGOUT 修飾子を指定していると,プロセスは仮想端末に接続されたままです。このプロセスでイメージを実行している場合は,プロセスが端末からの入力を必要とする,または端末に書き込みを行おうとするまで,イメージは引き続き実行されます。プロセスが端末からの入力を必要とする時,または端末に書き込みを行おうとする時は,物理端末が仮想端末に再接続するまで,プロセスは待ち状態になります。
仮想端末を使用していなくても,仮想端末に接続することができます。ただし現在のプロセスをログ・アウトするためには, CONNECT コマンドに /LOGOUT 修飾子を指定しなければなりません。仮想端末から他の仮想端末に接続する場合は, /NOLOGOUT 修飾子を指定すると,現在のプロセスも残すことができます。
/CONTINUE
/NOCONTINUE (省略時の設定)
他のプロセスに接続する直前に,現在のプロセスで CONTINUE コマンドを実行するかどうかを制御します。この修飾子を指定すると,ユーザが他のプロセスに接続した後で,割り込みをかけられたイメージの処理を続けることができます。/CONTINUE 修飾子を /LOGOUT 修飾子と同時に指定することはできません。
/LOGOUT (省略時の設定)
/NOLOGOUT
仮想端末を使用して他のプロセスに接続する時に,現在のプロセスをログ・アウトします。仮想端末に接続していないプロセスから CONNECT コマンドを実行する場合は, /LOGOUT 修飾子を指定しなければなりません。 /LOGOUT 修飾子を指定しないと,DCL はエラー・メッセージを表示します。
/LOGOUT 修飾子を /CONTINUE 修飾子と同時に指定することはできません。
#1 |
---|
$ RUN AVERAGE [Ctrl/Y] $ CONNECT/CONTINUE VTA72 |
RUN コマンドを使用して,イメージ AVERAGE.EXE を実行します。この RUN コマンドは,仮想端末に接続していない端末から発行しています。次に Ctrl/Y を押して,イメージに割り込みをかけます。その後 CONNECT コマンドに /CONTINUE 修飾子を指定します。これにより CONTINUE コマンドが発行され,イメージの実行が継続され,ユーザは他の仮想端末に接続します。ユーザは後で元のプロセスに再度接続することができます。
#2 |
---|
$ SHOW USERS/FULL VAX/VMS User Processes at 22-DEC-2001 14:11:56.91 Total number of users = 51, number of processes = 158 Username Node Process Name PID Terminal KIDDER BUKETT KIDDER 29A0015E FTA3: KIDDER BUKETT _FTA4: 29A0015F FTA4: KIDDER RACEY1 KIDDER 05800062 FTA5: KIDDER RACEY1 DECW$MWM 0580005D MBA44: Disconnected KIDDER RACEY1 DECW$SESSION 05800059 KIDDER RACEY1 VUE$KIDDER_2 0580005E (subprocess of 05800059) KIDDER RACEY1 VUE$KIDDER_3 0580005F MBA51: Disconnected KIDDER RACEY1 VUE$KIDDER_4 05800060 MBA53: Disconnected SMITH BUKETT SMITH 29A002C1 FTA7: SMITH BUKETT SMITH_1 29A006C2 (subprocess of 29A002C1) SMITH BUKETT SMITH_2 29A00244 (subprocess of 29A002C1) SMITH HAMLET SMITH 24800126 FTA6: SMITH HAMLET DECW$BANNER 24800155 (subprocess of 24800126) SMITH HAMLET DECW$MWM 2480011F MBA170: Disconnected SMITH HAMLET DECW$SESSION 2480011D FTA5: . . . $ CONNECT VTA273 SMITH logged out at 22-DEC-2001 14:12:04.53 $ |
この例は,キャリア・シグナルを失った後,元のプロセスに再度接続する方法を示しています。まず再度ログ・インして新しいプロセスを作成します。ログ・インしたら,SHOW USERS/FULL コマンドを実行して,元のプロセスの仮想端末名を確認します。次に CONNECT コマンドを実行して,元のプロセスを実行していた仮想端末に接続します。特に修飾子を指定していないので, CONNECT コマンドを発行したプロセスは,ログ・アウトします。
元のプロセスに再度接続したら,キャリア・シグナルを失った時に実行していたイメージの実行を続けます。この例では,接続が切断された時,ユーザ SMITH は会話型レベルでした。
前へ | 次へ | 目次 | 索引 |