[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

22 DCLディクショナリ - W -


WAIT

指定した時間が過ぎるまで,現在のプロセスを待ち状態にします。WAITコマンドは, コマンド・プロシージャの中でプロシージャ自体の処理を遅らせるため, またはプロシージャに含まれるいくつかのコマンドの処理を遅らせるために使用します。

フォーマット

     WAIT  デルタ時間 

パラメータ

デルタ時間

待機する時間を指定します。 デルタ時間は,現在の時刻から未来へのオフセット値です。次の形式で指定します。
   時:分:秒.ミリ秒 

各フィールドと,指定できる範囲を示します。

0から23までの整数
0から59までの整数
0から59までの整数
ミリ秒 0から99までの整数

コロン(:)およびピリオド(.)は,区切り文字として必要です。 また時間のフィールドが0の場合でも,デルタ時間はコロンからではなく, 時から指定しなければなりません。デルタ時間には, 通常は日フィールドが含まれますが,このコマンドでは指定してはいけません。

デルタ時間の指定についての詳細は, 『OpenVMSユーザーズ・マニュアル』 またはオンライン・ヘルプの DCL_Tips トピック (Date_Time サブトピック) を参照してください。

WAITコマンドを会話型モードで実行した場合でも, 時間の入力を要求するプロンプトは表示されません。 しかし,時間を指定しなかった場合はこのコマンドは無効です。

説明

会話型モードでWAITコマンドを実行すると,現在のプロセスは待ち状態になり, 指定した時間が過ぎるまで他のコマンドを実行することはできません。 ただし,他のプロセスからの(処理を要求しない)メッセージのみは受け取ります。 Ctrl/CまたはCtrl/Yを押すと,通常の状態に戻ります。

  1. $ LOOP:
    $ RUN KUDOS
    $ WAIT 00:10
    $ GOTO LOOP
    
    このコマンド・プロシージャは,KUDOSというプログラム・イメージを実行します。 RUNコマンドを使用してプログラムを実行した後,WAITコマンドは, GOTOコマンドの実行を10分だけ遅らせます。 時間フィールドに対して,00が指定されている点に注意してください。 これは,時間指定をコロンで開始することはできないためです。 10分後にGOTOコマンドは実行され,プロシージャはLOOPというラベルに制御を渡し, KUDOSプログラムがもう一度実行されます。 このプロシージャは割り込みがかけられるまで,または終了されるまで繰り返します。

    このプロシージャを会話型モードで実行している場合には,Ctrl/CまたはCtrl/Yを押し, STOPコマンドまたは新しいイメージをプロセスの中で実行する他の DCLコマンドを実行すると,このプロシージャは終了します。 このプロシージャがバッチ・ジョブで実行されている場合には, DELETE/ENTRYコマンドを使用して終了します。


WRITE

論理名によって指定されたオープンされたファイルに, 指定したデータを書き込みます。 データは,オープンされたファイルに1レコードとして書き込まれます。

修飾子はすべて,式に先行して指定しなければなりません。

フォーマット

     WRITE  論理名 式[,...] 

パラメータ

論理名

出力ファイルに割り当てられている論理名を指定します。 ここには,OPENコマンドにより割り当てられた論理名を指定します。 会話型モードでは,論理名SYS$INPUT,SYS$OUTOUT,SYS$ERROR,および SYS$COMMANDにより識別される,プロセス・パーマネント・ファイルを指定します。 OPENコマンドはファイルに論理名を割り当て,論理名を論理名テーブルに登録します。

式[,...]

出力ファイルに1レコードとして書き込むデータを指定します。 データ項目はシンボル名,二重引用符で囲まれた文字列,リテラル値, レキシカル関数などの文字列式を使用して指定します。 文字列式についての詳細は,『OpenVMSユーザーズ・マニュアル』を参照してください。

コンマ(,)で区切ることにより複数の式を指定できます。コマンド・インタプリタは, 各項目を1つのレコードに連結し,そのレコードを出力ファイルに書き込みます。

書き込むことができるレコードの最大サイズは,1024バイトです。 またレコードの一部として指定される, あらゆるシンボルの値は 255を越えてはなりません。 ただし /SYMBOL修飾子を指定している場合は例外となり, この場合の最大サイズは2048バイトであり, シンボルの値は255文字を越えることができます。

説明

WRITEコマンドは,書き込みに対してオープンされている順編成ファイル, 相対編成ファイル,または索引ファイルに,レコードを書き込むことができます。 WRITEコマンドを使用してレコードを書き込む場合, レコードを書き込んだ直後にレコード・ポインタを常に設定します。

レコードをファイルに書き込む場合,そのファイルは,OPENコマンドに /WRITEまたは /APPEND修飾子を使用してオープンにしておかなければなりません。 ただし論理名 SYS$INPUT,SYS$OUTPUT,SYS$ERROR,および SYS$COMMANDにより識別されるプロセス・パーマネント・ファイルは, 明示的にオープンにしておく必要はありません。

/SYMBOL修飾子を指定しない場合は, DCLによりコマンドと完全な文字列式は1024バイトのバッファに記憶されます。 /SYMBOL修飾子を指定すると,DCLにより1つまたは複数のシンボルが解釈され, 展開された文字列は別々の2048バイトのバッファに記憶されます。 その後,書き込み操作が行われます。 このため,レコードが1000バイト以上ある場合は,/SYMBOL修飾子を指定してください。

修飾子

/ERROR=ラベル

入出力エラーが発生した場合は, (コマンド・プロシージャ内の)ラベルで指定される位置に,制御を移します。 エラー・ルーチンが指定されていないときに, ファイルの書き込み中にエラーが発生すると,現在のON条件処理が実行されます。 この修飾子に対して指定されているエラー処理ルーチンは, ONコマンドに指定されている処理よりも優先されます。 エラーが発生し,行き先として指定したラベルに制御が正しく移ると, $STATUSという予約済みグローバル・シンボルに,そのエラーを示すコードが設定されます。

/SYMBOL

書き込み操作が実行される前に式が解釈され, 展開された値が2048バイトのバッファに記憶されることを指定します。 複数の式を指定した場合には,各式の値が連結され, 2048バイトのバッファに記憶されます。 非常に大きなレコードを書き込む場合は,/SYMBOL修飾子を使用します。

指定する各式はシンボルでなければなりません。/SYMBOL修飾子を使用する場合には, 文字列式(つまり引用符で囲まれた文字列)は指定できません。

/SYMBOL修飾子を使用しない場合には, 式を含めたコマンド全体が1024バイトのバッファに記憶されます。

/UPDATE

既存のレコードを,指定したレコードを使用して更新することを指定します。 /UPDATE修飾子を使用するためには, ファイルの読み込みと書き込みができなければなりません。 WRITE/UPDATEコマンドを使用できるのは,READコマンドを実行したあとのみです。 WRITE/UPDATEコマンドは,最後に読み込まれたレコードを変更します。

順編成ファイルに対してWRITE/UPDATEコマンドを使用する場合には, 同じサイズのレコードと置き換えなければなりません。

  1. $ WRITE SYS$OUTPUT "Beginning second phase of tests"
    
    この例でWRITEコマンドは,1行のテキストを現在の出力装置に書き込みます。

  2. $ OPEN/APPEND OUTPUT_FILE TRNTO::DBA1:[PGM]PLAN.DAT
    $ WRITE OUTPUT_FILE "BEGINNING PHASE 3"
    
    この例でOPEN/APPENDコマンドは,遠隔ノードTRNTOでファイルPLAN.DATをオープンし, ファイルの最後にポインタを設定します。 WRITEコマンドはファイルPLAN.DATの最後にレコードを書き込みます。

  3. $ OPEN/WRITE OUTPUT_FILE TESTFILE.DAT
    $ INQUIRE ID "Assign Test-id Number"
    $ WRITE/ERROR=WRITE_ERROR  OUTPUT_FILE  "Test-id is ",ID
    $ WRITE/ERROR=WRITE_ERROR  OUTPUT_FILE  ""
    $ !
    $ WRITE_LOOP:
       .
       .
       .
    $ GOTO WRITE_LOOP
    $ END_LOOP:
    $ !
    $ CLOSE OUTPUT_FILE
    $ PRINT TESTFILE.DAT
    $ EXIT
    $ !
    $ WRITE_ERROR:
    $ WRITE SYS$OUTPUT "There was a WRITE error."
    $ CLOSE OUTPUT_FILE
    $ EXIT
    
    OPENコマンドでファイルTESTFILE.DATをオープンし, INQUIREコマンドでシンボルIDに識別番号を割り当て, WRITEコマンドでシンボルIDと空行を書いています。

    ラベルWRITE_LOOPとEND_LOOPの間では, 適当な処理を行って他の情報をファイルに書いています。処理が終了すると, 制御はラベルEND_LOOPに移りCLOSEコマンドでファイルをクローズし, PRINTコマンドでプリンタへ出力しています。

    ラベルWRITE_ERRORは/ERROR修飾子の対象として使用され, WRITEコマンド実行時にエラーが発生した場合は,ここへ制御が移ります。

  4. $ OPEN/APPEND MYFILE [JONES]TESTING.DAT
    $ WRITE/SYMBOL MYFILE A,B,C
    
    この例ではシンボルA,B,Cがすでに定義済みであると仮定されています。 OPEN/APPENDコマンドは[JONES]TESTING.DATというファイルをオープンし, ファイルの最後にポインタを設定します。 WRITE/SYMBOLコマンドはシンボルA,B,Cの値を連結し, このデータをファイルの最後に新しいレコードとして書き込みます。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]