OpenVMS
ユーザーズ・マニュアル


前へ 次へ 目次 索引


14.20.6 PIPE コマンドへの割り込み

Ctrl/Y を押すと,PIPE コマンドに割り込みをかけることができます。PIPE コマンドをパイプラインまたはサブシェル・コマンド・シーケンスで実行している場合は,コマンド・シーケンスと PIPE コマンドが削除されます。この場合,割り込み直後に CONTINUE コマンドを入力しても,PIPE コマンドの実行は再開されません。

PIPE コマンドが,サブシェル・コマンド・シーケンスまたはパイプライン・コマンド・シーケンス以外の,コマンド・シーケンスを実行している場合は,DCL は,コマンド・シーケンスが PIPE コマンド動詞なしで入力され,Ctrl/Y で割り込みをかけられたように動作します。Ctrl/Y 割り込みについての詳細は,第 13.11 節 を参照してください。

14.20.7 サブプロセスの性能向上

PIPE コマンドは,実行中に多数のサブプロセスを作成できます。通常,コマンド・シーケンスにより起動されるアプリケーションは,プロセスの論理名とシンボル名に依存しません。この場合,/NOLOGICAL_NAME および /NOSYMBOLS 修飾子を使用すると,サブプロセスを素早く作成できます。これらの修飾子により,プロセスの論理名とシンボル名は,PIPE コマンドにより作成されたサブプロセスに渡されなくなります。

PIPE コマンドの使用例を次に示します。


第 15 章
レキシカル関数を使用しての情報の取得と処理

レキシカル関数は,コマンド行またはコマンド・プロシージャに情報を戻します。戻される情報は,プロセス,システム,ファイルとデバイス,論理名,文字列,データ型に関するものです。レキシカル関数には,接頭辞 F$ が付いています。

レキシカル関数は,通常,シンボルや式を使用するコンテキストの中で使用します。コマンド・プロシージャの中では,論理名を変換したり,文字列処理を行ったり,プロシージャの現在の処理モードを判別したりするのに使用します。レキシカル関数が戻す情報の多くは,DCL コマンドで取得することもできます。

本章では,次のことを説明します。

レキシカル関数についての詳しい説明は,オンライン・ヘルプを参照してください。本章で説明するコマンドについての詳細は,『OpenVMS DCL ディクショナリ』を参照してください。

15.1 なぜレキシカル関数を使うのか

コマンドから情報を得るよりもレキシカル関数から情報を得た方が,コマンド・プロシージャの中で情報を処理しやすくなります。たとえば,F$ENVIRONMENT 関数または SHOW DEFAULT コマンドのどちらを使用しても,現在の省略時のディレクトリの名前を得ることができます。ただし,次の点が異なります。

15.2 プロセスについての情報

コマンド・プロシージャを実行している間,プロセス属性を頻繁に変更し,その後で属性を復元します。次のレキシカル関数を使用すれば,プロセスに関する情報を入手できます。

F$DIRECTORY 現在の省略時のディレクトリ文字列を戻す。
F$ENVIRONMENT ユーザ・プロセスのコマンド環境についての情報を戻す。
F$GETJPI ユーザ・プロセスまたはシステム上の他のプロセスについての会計情報,状態,識別情報を戻す。
F$MODE プロセスを実行中のモードを示す。
F$PRIVILEGE ユーザ・プロセスに特権が指定されているかどうかを示す。
F$PROCESS プロセスの名前を戻す。
F$SETPRV 指定された特権を設定する。指定された特権が,F$SETPRV 関数を使用する前に使用可能であったかどうかも示す。
F$USER UIC(ユーザ識別コード)を戻す。
F$VERIFY チェック機能のオンまたはオフを示す。

次の表は,コマンド・プロシージャで一般に変更されるプロセス属性を示しています。また,これらの属性をセーブするレキシカル関数と,元の設定を復元する DCL コマンドも示しています。

属性 操作 コマンドまたはレキシカル関数
制御文字 セーブ F$ENVIRONMENT("CONTROL")
  復元 SET CONTROL
     
DCL プロンプト セーブ F$ENVIRONMENT("PROMPT")
  復元 SET PROMPT
     
省略時の保護 セーブ F$ENVIRONMENT("PROTECTION")
  復元 SET PROTECTION/DEFAULT
キー状態 セーブ F$ENVIRONMENT("KEY_STATE")
  復元 SET KEY
     
メッセージ形式 セーブ F$ENVIRONMENT("MESSAGE")
  復元 SET MESSAGE
     
特権 セーブ F$PRIVILEGE または F$SETPRV
  復元 F$SETPRV または SET PROCESS/PRIVILEGES
     
チェック機能 セーブ F$VERIFY または F$ENVIRONMENT
  復元 F$VERIFY または SET VERIFY

プロセス属性をセーブした場合,エラーまたは Ctrl/Y による割り込みによって,元の属性を復元する前にプロシージャが終了することのないようにしなければなりません。エラーと Ctrl/Y による割り込みの処理については,第 13 章 を参照してください。

15.2.1 チェック設定値の変更

F$VERIFY レキシカル関数を使用すると,コマンド・プロシージャが実行されている間だけチェック機能を無効にすることができます。このとき,ユーザは,プロシージャを実行しながらそのプロシージャの内容を表示することはできません。

チェック機能には,次の 2 つのタイプがあります。

省略時の設定では,SET [NO]VERIFY コマンドと F$VERIFY レキシカル関数は,両方のタイプのチェック機能をオン,オフします。通常は,プロシージャの中のプロージャおよびイメージ・チェック設定値は同じになっています(両方がオンか,両方がオフになっています)。ただし,設定値を変更する場合には,それぞれのチェック設定値を別々にセーブします。

次の例では,シンボル TEMP を使用して,チェック機能を有効および無効に設定します。


$ ! Enable verification 
$ ! 
$ TEMP = F$VERIFY(1)
$ LOOP: 
$     INQUIRE FILE "File name" 
$     IF FILE .EQS."" THEN EXIT 
$     PRINT 'FILE' 
$     GOTO LOOP 
$ ! Disable verification 
$ ! 
$ TEMP = F$VERIFY(0)
$ EXIT 

次の例では,チェック機能の設定がセーブされます。


$ ! Save each verification state 
$ ! Turn both states off 
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE")
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(0)
   .
   .
   .
$ ! Restore original verification states 
$ SAVE_VERIFY_IMAGE = F$VERIFY(SAVE_VERIFY_PROCEDURE,- 
      SAVE_VERIFY_IMAGE)

上記の例で,F$ENVIRONMENT 関数は,現在のイメージ・チェック設定値を戻し,この値を SAVE_VERIFY_IMAGE シンボルに割り当てています。次に,F$VERIFY 関数が現在のプロシージャ・チェック設定値を戻し,この値を SAVE_VERIFY_PROCEDURE シンボルに割り当てています。F$VERIFY 関数は,イメージ・チェックとプロシージャ・チェックの両方を無効にします。F$ENVIRONMENT 関数を使用すれば,F$VERIFY によってチェック機能を無効にする前にプロシージャ・チェック設定値を得ることができます。ただし,上記の例に示すように,F$VERIFY を使用して 1 つのコマンド行の中で両方のタスクを行った方がプロシージャの長さが短くてすみます。

プロシージャの終わりに,F$VERIFY 関数で元の設定値(シンボル SAVE_VERIFY_PROCEDURE と SAVE_VERIFY_IMAGE によって指定される)を復元しています。

注意

時刻印字を使用する場合,チェック機能が使用可能な場合にだけ適用されることに注意してください。時刻印字と SET PREFIX コマンドについての詳細は,『OpenVMS DCL ディクショナリ』または DCL ヘルプを参照してください。

15.2.2 省略時のファイル保護の変更

コマンド・プロシージャの中で省略時のファイル保護を変更したい場合があります。次のコマンド・プロシージャは,プロシージャの実行中に作成されたファイルに関連する省略時の保護を変更します。この場合,終了する前に元の省略時のファイル保護を復元しています。


$ SAVE_PROT = F$ENVIRONMENT("PROTECTION")
$ SET PROTECTION =(SYSTEM:RWED, OWNER:RWED, GROUP, WORLD)/DEFAULT 
   .
   .
   .
$ SET PROTECTION=('SAVE_PROT')/DEFAULT 
$ EXIT 

この例で,F$ENVIRONMENT 関数は,SET PROTECTION コマンドの構文を使用して省略時の保護コードを戻しています。このため,SET PROTECTION コマンドと一緒に SAVE_PORT シンボルを使用して元の省略時のファイル保護を復元できます。

15.3 システムについての情報

システムについての情報を得るには,次のレキシカル関数を使用します。

F$CONTEXT F$PID 関数と一緒に使用する場合の選択基準を指定する。F$CONTENT 関数と一緒に F$PID 関数を使用すると,OpenVMS Cluster の任意のノードのプロセスについての情報を得ることができる。
F$CSID VMS クラスタ識別番号を戻して,システムのVMS クラスタ・ノード・リストの中の現在の位置を指すようにコンテキスト・シンボルを更新する。
F$GETQUI システム・ジョブ・キュー・ファイルに収められたキュー,現在キューの中にあるバッチ・ジョブと印刷ジョブ,フォーム定義,属性定義についての情報を戻す。
F$GETSYI ローカル・システムまたは VMS クラスタ内のノード(システムが VMS クラスタの一部である場合)についての情報を戻す。
F$IDENTIFIER 識別子を指定された形式から数値形式に,または数値形式から指定された形式に変換する。
F$MESSAGE 状態コードに関連するメッセージ・テキストを戻す。
F$PID ユーザがチェックすることが許容されているプロセスのプロセス識別番号(PID)を戻す。
F$TIME 現在の日時を戻す。


前へ 次へ 目次 索引