HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
プロセスが実行されているモードを示す文字列を戻します。 F$MODE 関数には引数はありませんが,括弧は指定しなければなりません。
F$MODE()
なし。
F$MODE レキシカル関数は,プロセスがじっこうされているモードを示す文字列を戻します。引き数はとりませんが,括弧は省略できません。会話型で実行する場合と,非会話型で実行する場合とでは,別々に処理する必要がある時,コマンド・プロシージャで F$MODE 関数を使用すると便利です。ログイン・コマンド・プロシージャに F$MODE 関数,または F$ENVIRONMENT 関数を入れておき,会話型ターミナル・セッションと非会話型セッションではことなるコマンドを実行するようにしておきます。
ログイン・コマンド・プロシージャに F$MODE 関数を含めず,会話型プロセスから実行されるかどうかを調べていない時に,ログイン・コマンド・プロシージャが非会話型プロセス ( たとえばバッチ・ジョブ ) から実行されると,コマンド・プロシージャ内に会話型プロセスでのみ使用できるコマンドが含まれている場合は,プロセスが異常終了する可能性があります。
コマンド・プロシージャは F$MODE 関数を使用して,会話型ターミナル・セッションでプロシージャが実行されるかどうか調べることができます。また F$MODE 関数の戻り値に基づいて,制御を移すことができます。
| #1 |
|---|
$ IF F$MODE() .NES. "INTERACTIVE" THEN GOTO NON_INT_DEF $ INTDEF: ! Commands for interactive terminal sessions . . . $ EXIT $ NON_INT_DEF: !Commands for noninteractive processes . . . |
この例では,ログイン・コマンド・ファイルの初めの部分が示されています。このコマンド・プロシージャは,2 つの初期化コマンドがあります。 1 つは会話型モードの場合のコマンドで,もう 1 つは ( バッチ・ジョブやネットワーク・ジョブを含む ) 非会話型モードの場合のコマンドです。 IF コマンドは,F$MODE から戻された文字列が,INTERACTIVE という文字列と,等しいかどうかを調べます。等しくない場合には,制御は NON_INT_DEF というラベルに分岐します。等しい場合には,INTDEF というラベルのあとのステートメントが実行され,プロシージャは NON_INT_DEF の前にあるステートメントで終了します。
特定のマルチパス対応装置の,指定された項目の情報を戻します。
F$MULTIPATH (装置名,項目,コンテキスト・シンボル)
装置名
物理装置名または物理装置名と同等の論理名を指定します。装置名は文字列式で指定します。装置名引数を評価した後,F$MULTIPATH 関数は名前の最初の文字を調べます。最初の文字がアンダースコア (_) の場合は,名前は物理装置名とみなされます。そうでない場合は,1 レベルの論理名変換が実行され,等価名があればそれが使用されます。
項目
戻すべき装置情報の種類を指定します。この引数は文字列式として指定します。現時点で唯一有効な項目は MP_PATHNAME です。これは,指定されたマルチパス対応装置のパス名を示す文字列を戻します。コンテキスト・シンボル
最初に MP_PATHNAME を指定して F$MULTIPATH を使用する前に,コンテキスト・シンボルを 0 に初期化しておく必要があります。 F$MULTIPATH 関数は,コンテキスト・シンボルの値を維持する責任があります。
警告
コンテキスト・シンボルを 0 に初期化した後で値を変更しないでください。値を変更すると,F$MULTIPATH が予測できない動作をします。
システム・サービス $DEVICE_PATH_SCAN を呼び出して,特定のマルチパス対応装置の,指定された項目の情報を戻します。またレキシカル関数 F$MULTIPATH は,システム・サービス $DEVICE_PATH_SCAN が生成したエラー・メッセージも戻します。
システム・サービス $DEVICE_PATH_SCAN についての詳細は,『OpenVMS System Services Reference Manual』を参照してください。
| #1 |
|---|
$ XYZ = 0 $ $LOOP: $ PATH = F$MULTIPATH( "$1$DGA12", "MP_PATHNAME", XYZ ) $ IF PATH .EQS. "" THEN GOTO EXIT $ WRITE SYS$OUTPUT "PATH NAME = ''PATH'" $ GOTO LOOP $ $EXIT: $ EXIT |
この例は,項目コードとして MP_PATHNAME を指定した F$MULTIPATH の使用方法を示します。コンテキスト・シンボル XYZ がループの外で 0 に初期化されている点に注意してください。このコマンド・プロシージャの出力を下に示します。指定されたマルチパス装置のすべてのパスが戻された後,空白のパス名が戻されてリストの終わりが示されます。
path name = PGA0.5000-1FE1-0001-5782 path name = PGA0.5000-1FE1-0001-5783 path name = PGA0.5000-1FE1-0001-5781 path name = PGA0.5000-1FE1-0001-5784 path name = MSCP
ファイル指定を解析し,拡張ファイル指定,またはユーザが指定した特定のファイル指定フィールドを戻します。
F$PARSE (ファイル指定 [,省略時のファイル指定] [,関連ファイル指定] [,フィールド] [,解析タイプ])
解析中にエラーを検出した場合, F$PARSE 関数はたいてい空文字列 ("") を返します。たとえば,ファイル指定が間違った構文である場合や,指定したディスクやディレクトリが存在しない ( 結果としてファイル指定が論理的に間違っている ) 場合は,空文字列が返されます。ただし,フィールド名を指定する,または解析タイプに SYNTAX_ONLY を指定すると,適切な情報が返されます。
ファイル指定
解析するファイル指定を含む文字列を指定します。ファイル指定にはワイルドカード文字を使用できます。この場合, F$PARSE により戻されるファイル指定もワイルドカード文字を含んでいます。
省略時のファイル指定
省略時のファイル指定を含む文字列を指定します。ファイル指定 引数で省略されているフィールドがあると,省略時のファイル指定の対応するフィールドで置換されます。この結果,まだ省略されているフィールドは, 関連ファイル指定 引数の対応するフィールドで置換されます。
関連ファイル指定
関連するファイル指定を含む文字列を指定します。ファイル指定 引数と 省略時のファイル指定 引数の両方で,省略されているフィールドがあると,関連ファイル指定の対応するフィールドで置換されます。
フィールド
ファイル指定のフィールド名を含む文字列を指定します。この引数を指定すると,F$PARSE 関数は,ファイル指定の特定の部分を戻します。次のフィールド名のいずれか 1 つを指定できます ( 省略することはできません )。
NODE ノード名 DEVICE 装置名 DIRECTORY ディレクトリ名 NAME ファイル名 TYPE ファイル・タイプ VERSION ファイル・バージョン番号
解析タイプ
実行される解析タイプを指定します。省略時の設定では,F$PARSE 関数は,ファイル指定で指定したディレクトリが,ファイル指定で指定した装置上に存在するかどうか確認します。ただし,フィールド 引数を指定した場合は,ディレクトリの存在は確認しません。装置とディレクトリは,引数の1つに明示的に指定できます。また,省略しても省略時の値として使用されます。また,省略時の設定で F$PARSE 関数は,他の引数として指定されている論理名があると,そのは論理名を変換します。 CONCEALED 属性を持つ論理名を検出すると,F$PARSE 関数は,反復変換を停止します。
次のキーワードを使用すると, F$PARSE 関数がファイル指定を解析する方法を変更できます。
NO_CONCEAL ファイル指定の一部に指定された論理名変換時に, "conceal" 属性を無視する。つまり,隠し論理名が検出されても,論理名変換は終了しない。 SYNTAX_ONLY ファイル指定の構文だけをチェックし,指定したディレクトリが装置上に確認するかどうかは確認しない。
F$PARSE 関数は,RMS サービスの $PARSE を使用して,ファイル指定を解析します。 $PARSE についての詳細は,『OpenVMS Record Management Services Reference Manual』を参照してください。F$PARSE 関数を使用する場合,最後に指定した引数の後ろに指定するオプションの引数を省略することができます。ただし,最後に指定する引数の前 ( 左 ) に指定するオプションの引数を省略する場合は,プレースホルダーとしてコンマ (,) を入れます。
ファイル指定 引数で装置名およびディレクトリ名を省略すると, F$PARSE 関数は,まず 省略時のファイル指定 引数,次に 関連ファイル指定 引数から,省略時設定の名前を補います。どちらの引数からも名前を得られない場合は,現在の省略時の設定を使用します。
ノード名,ファイル名,ファイル・タイプ,またはバージョン番号を省略すると, F$PARSE 関数は,まず 省略時のファイル指定 引数,次に 関連ファイル指定 引数から省略時設定を補います ( ただし,関連ファイル指定 引数からは,バージョン番号を補えない点に注意してください )。どちらの引数からも名前を与えられない場合は, F$PARSE はこれらのフィールドに空指定を戻します。
| #1 |
|---|
$ SET DEF DISK2:[FIRST]
$ SPEC = F$PARSE("JAMES.MAR","[ROOT]",,,"SYNTAX_ONLY")
$ SHOW SYMBOL SPEC
SPEC = "DISK2:[ROOT]JAMES.MAR;"
|
この例では,F$PARSE 関数は,JAMES.MAR というファイルの拡張ファイル指定を戻します。この例では,SYNTAX_ONLY キーワードを指定し, F$PARSE 関数は構文だけを調べ, [ROOT] ディレクトリが DISK2 に存在するかどうかは調べないよう指定しています。
省略時の装置とディレクトリは,DISK2:[FIRST] です。割り当て文の 省略時のファイル指定 引数に [ROOT] ディレクトリが指定されているので,[ROOT] ディレクトリは出力文字列のディレクトリ名として使用されます。出力文字列に戻される省略時の装置は DISK2 であり,このファイルの省略時のバージョン番号は空文字です。 JAMES.MAR と ROOT という引数は文字列リテラルなので,引用符("")で囲まなければなりません。
構文だけの解析をするように指定せず,しかも[ROOT]が DISK2 に存在しない場合には,空文字列が戻されます。
| #2 |
|---|
$ SET DEFAULT DB1:[VARGO]
$ SPEC = F$PARSE("INFO.COM",,,"DIRECTORY")
$ SHOW SYMBOL SPEC
SPEC = "[VARGO]"
|
この例では,F$PARSE 関数は, INFO.COM というファイルのディレクトリ名を戻します。引数リストで 省略時のファイル指定 引数と 関連ファイル指定 引数が省略されているので,それぞれの位置にコンマ (,) を指定しなければなりません。
| #3 |
|---|
$ SPEC= F$PARSE("DENVER::DB1:[PROD]RUN.DAT",,,"TYPE")
$ SHOW SYMBOL SPEC
SPEC = ".DAT"
|
この例では,F$PARSE 関数を使用して,ノード名を含むファイル指定を解析しています。 F$PARSE 関数は,DENVER というリモート・ノードの, RUN.DAT というファイルのファイル・タイプである,DAT を戻します。
プロセス識別番号 (PID) を戻し,システムのプロセス・リストで現在の位置を指すようコンテキスト・シンボルを変更します。
F$PID (コンテキスト・シンボル)
コンテキスト・シンボル
システムのプロセス・リストを示すポインタを格納するために, DCL が使用するシンボルを指定します。 F$PID 関数は,このポインタを使用して PID を戻します。シンボルを使用して,コンテキスト・シンボルを指定します。コマンド・プロシージャ内で最初に F$PID 関数を使用する時は,シンボルは未定義のシンボル,空文字列 ("") が割り当てられたシンボル,または F$CONTEXT 関数で設定されたコンテキスト・シンボルを使用します。
コンテキスト・シンボルが未定義または空文字列が割り当てられた場合は, F$PID 関数は,システムのプロセス・リスト中で,アクセス特権を持つ最初の PID を戻します。つまり,ユーザが GROUP 特権を持ち,コテキスト・シンボルが未定義または空文字列が割り当てられた場合は, F$PID 関数は,ユーザのグループで最初のプロセスの PID を戻します。ユーザが WORLD 特権を持っている場合は,F$PID 関数は,リストで最初のプロセスの PID を戻します。ユーザが GROUP 特権も WORLD 特権もない場合は,F$PID 関数は,該当ユーザが所有している最初のプロセスの PID を戻します。後続の F$PID 呼び出しは,ユーザがアクセスしているシステム上の他のプロセスを戻します。
コンテキスト・シンボルが F$CONTEXT 関数により設定されている場合, F$PID 関数は,F$CONTEXT 呼び出しで指定した選択基準に一致する,システムのプロセス・リストで最初のプロセスを戻します。後続の F$PID 呼び出しは,F$CONTEXT 関数により設定された選択基準に一致し,ユーザの現在の特権でアクセスできるプロセスの PID だけを戻します。
F$PID 関数は,プロセス識別番号 (PID) を戻し,システムのプロセス・リストでの現在の位置を指すようコンテキスト・シンボルを変更します。システム上のすべてのプロセスを使用することもできますし, F$CONTEXT 関数を使用して選択基準を指定することもできます。 F$CONTEXT 関数は必須ではありません。F$PID が戻すプロセス識別番号 (PID) は,ユーザのプロセスが持つ特権に応じて異なります。ユーザのプロセスが GROUP 特権を持っている場合は,グループ内のプロセスの PID が戻されます。ユーザのプロセスが WORLD 特権を持っている場合は,システム上のすべてのプロセスの PID が戻されます。いずれの特権も持たない場合は,該当ユーザが所有しているプロセスの PID だけが戻されます。
F$CONTEXT 関数は F$PID 関数が複合アーキテクチャ OpenVMS Cluster システムのどのノードからもプロセスを検索できるようにします。
最初に F$PID を使用するときには,未定義なシンボル,空文字列が割り当てられたシンボル,または F$CONTEXT で作成したコンテキスト・シンボルを指定してください。これにより F$PID 関数は,ユーザがアクセス権を没,システムのプロセス・リストで最初の PID を戻します。また,F$PID 関数は コンテキスト・シンボル 引数を初期化します。
一度 コンテキスト・シンボル 引数が初期化されると,後続の F$PID は,F$CONTEXT で設定した選択基準を使用して順々に PID を戻します。そして,コンテキスト・シンボルがあれば,これを更新します。次に取り出す PID が無くなると, 空文字列が戻されます。プロセシ・リストの最後の PID を戻した後は, F$PID 関数は空文字列を戻します。
| #1 |
|---|
$ CONTEXT = "" $ START: $ PID = F$PID(CONTEXT) $ IF PID .EQS. "" THEN EXIT $ SHOW SYMBOL PID $ GOTO START |
このコマンド・プロシージャは,F$PID 関数を使用して, PID のリストを表示しています。割り当てステートメントは,CONTEXT というシンボルを宣言しています。このシンボルは, F$PID 関数に対する コンテキスト・シンボル引数として使用されます。 CONTEXT には空文字列が割り当てられているので, F$PID 関数は,アクセス権がある,プロセス・リストで最初の PID を戻します。
このコマンド・プロシージャで表示される PID は,プロセスの持つ特権に応じて異なります。 GROUP 特権を持つ場合には,グループに含まれるユーザの PID が表示されます。 WORLD 特権を持つ場合には,システムのすべてのユーザの PID が表示されます。 GROUP 特権も WORLD 特権も持たない場合には,該当ユーザが所有しているプロセスの PID だけが表示されます。
| 前へ | 次へ | 目次 | 索引 |