OpenVMS
DCL ディクショナリ


前へ 次へ 目次 索引


注意

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 が実行されるまで,プロシージャは継続します。


CANCEL

RUN コマンドまたは $SCHDWK システム・サービスでスケジューリングされたウェイクアップ要求を含め,指定したプロセスに対するウェイクアップ要求を取り消します。

次のいずれか 1 つが必要です。


形式

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 コマンドで削除するまで,ハイバネートします。


CLOSE

OPEN コマンドによりオープンされているファイルをクローズし,関連する論理名を解除します。

形式

CLOSE 論理名[:]


パラメータ

論理名[:]

OPEN コマンドによりファイルがオープンされた時に,そのファイルに割り当てる論理名を指定します。

説明

コマンド・レベルでの読み込みまたは書き込みのためにオープンされているファイルは,CLOSE コマンドで終了するまで,またはそのプロセスが終了するまで,オープンされています。ファイルをオープンしたコマンド・プロシージャが,オープンしたファイルをクローズせずに終了すると,ファイルはオープンなままです。コマンド・インタプリタが自動的にそのファイルをクローズさせることはありません。

修飾子

/DISPOSITION=オプション

ファイルをクローズするときにどのような操作を実行するかを指定します。オプションは,次のとおりです。

DELETE ファイルを削除する。
KEEP (default) ファイルを保存する。
PRINT ファイルをプリントする。
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 コマンドは,これらのファイルをクローズし,論理名の割り当てを解除します。


CONNECT

ユーザが使用している物理端末を,他のプロセスと接続している仮想端末と接続します。

ユーザは,ユーザの利用者識別コード(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 は会話型レベルでした。


前へ 次へ 目次 索引