| 日本-日本語 |
|
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 目次 | 索引 |
この例では,プリント・ジョブ 1347 のブロック・サイズを得るために F$GETQUI レキシカル関数が使用されています。F$GETQUI が戻す値は,プリント・ジョブ1347 に関連するファイルが占有している総ブロック・サイズです。
| #2 |
|---|
$ IF F$GETQUI("DISPLAY_QUEUE", "QUEUE_STOPPED", "VAX1_BATCH") .EQS.
"TRUE" THEN GOTO 500
|
この例では,F$GETQUI レキシカル関数を使用して VAX1_BATCH キューが停止状態かどうかを調べています。VAX1_BATCH が停止状態であれば TRUE,そうでなければ FALSE が戻されます。 VAX1_BATCH キューがシステムに存在しない場合は,空文字列("") が戻されます。
| #3 |
|---|
! This command procedure shows all queues and the jobs in them.
$ TEMP = F$GETQUI("")
$ QLOOP:
$ QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*")
$ IF QNAME .EQS. "" THEN EXIT
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "QUEUE: ", QNAME
$ JLOOP:
$ NOACCESS = F$GETQUI("DISPLAY_JOB","JOB_INACCESSIBLE",,"ALL_JOBS")
$ IF NOACCESS .EQS. "TRUE" THEN GOTO JLOOP
$ IF NOACCESS .EQS. "" THEN GOTO QLOOP
$ JNAME = F$GETQUI("DISPLAY_JOB","JOB_NAME",,"FREEZE_CONTEXT")
$ WRITE SYS$OUTPUT " JOB: ", JNAME
$ GOTO JLOOP
|
この例は,システムのすべてのキュー,およびユーザが READ アクセスを持つすべてのジョブを表示するコマンド・プロシージャです。外側のループでは,ワイルド・カードを使用してキューの表示が実行されます。キュー情報を得る時には,アクセス権の確認は必要ありません。これは,すべてのユーザは暗黙でキュー属性への READ アクセス権を持っているからです。キュー名にワイルドカード ("*") が指定されているため,キューのリスト (ワイルドカード・コンテキスト) が保持されます。
内側のループでは,すべてのジョブの情報を得るために,ワイルドカード表示キュー・モードからネストしたワイルドカードを入力しています。このループでは,ジョブに対しては暗黙の READ アクセス権は与えられていないので,ジョブ情報を得る事ができるかどうかを確認しなければなりません。ジョブに対する要求の中で FREEZE_CONTEXT キーワードを使用して,ワイルドカード・コンテキストを次のオブジェクトへ進めないないようにしています。ジョブ名が検索され表示されると,制御は次のジョブに移ります。この時には,FREEZE_CONTEXT キーワードは使用されていないので,コンテキストは次のジョブに進みます。このワイルドカード・キュー・コンテキストは,一致するキューがなくなるまで維持されます。一致するキューがなくなると,F$GETQUI は,一致するオブジェクトがこれ以上ないことを示すために,空文字列 ("") を戻します。
| #4 |
|---|
$ THIS_NODE = F$EDIT(F$GETSYI("SCSNODE"),"COLLAPSE")
$ TEMP = F$GETQUI("CANCEL_OPERATION")
$ SET NOON
$LOOP:
$ QUEUE = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*","WILDCARD")
$ IF QUEUE .EQS. "" THEN GOTO ENDLOOP
$ IF THIS_NODE .EQS.-
F$GETQUI("DISPLAY_QUEUE","SCSNODE_NAME","*","WILDCARD,FREEZE_CONTEXT")
$ THEN
$ IF .NOT.-
F$GETQUI("DISPLAY_QUEUE","QUEUE_AUTOSTART","*","WILDCARD,FREEZE_CONTEXT")-
THEN START/QUEUE 'QUEUE'
$ ENDIF
$ GOTO LOOP
$ENDLOOP:
$ SET ON
|
この例は,ローカル・クラスタ・ノードに関するすべてのキューを調べ,自動起動になっていないキューを開始させるコマンド・プロシージャです。
このコマンド・プロシージャは,ローカル・システムのノード名を得て, F$GETQUI コンテキストをクリアにします。キューが既に起動している場合は, START QUEUE コマンドの結果としてこのコマンド・プロシージャが強制終了されることのないように,エラー処理を無効にしておきます。
ループ内では,F$GETQUI レキシカル関数は,キュー・リストから次のキュー名を取り出します。次のキューがない場合は,ループを終了します。
次の IF は,ローカル・ノードでキューが実行するかをチェックしています。実行する場合は,次に,キューが自動起動になっているかをチェックします。ローカル・ノードでキューが実行しない場合は, START コマンドを使用してキューを起動させます。その後,ループを繰り返します。
最後のコマンドは,DCL エラー処理を以前の設定にリストアします。
| #5 |
|---|
$ IF p1.EQS."" THEN INQUIRE p1 "Queue name"
$ TEMP = F$GETQUI("")
$ QLOOP:
$ QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME",p1,"WILDCARD")
$ IF QNAME .EQS. "" THEN EXIT
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "QUEUE: ", QNAME
$ JLOOP:
$ RETAINED = F$GETQUI("DISPLAY_JOB","JOB_RETAINED",,"ALL_JOBS")
$ IF RETAINED .EQS. "" THEN GOTO QLOOP
$ Entry = F$GETQUI("DISPLAY_JOB","ENTRY_NUMBER",,"FREEZE_CONTEXT,ALL_JOBS")
$ WRITE SYS$OUTPUT " Entry: ''Entry' Retained: ''RETAINED'"
$ IF RETAINED.EQS."TRUE" THEN DELETE/ENTRY='Entry'
$ GOTO JLOOP
|
このコマンド・プロシージャは,指定されたキューに保持されているすべてのエントリを削除します。ワイルドカードを使用することもできます。
| #6 |
|---|
$ WRITE SYS$OUTPUT F$GETQUI("DISPLAY_QUEUE","RAD","BATCHQ1")
-1
|
この例は,RAD の値を返します。値 "-1" は,キューに RAD の値が割り当てられていないことを示します。
| 目次 | 索引 |
|
||||||||