日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
プロセスが実行されているモードを示す文字列を戻します。 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 の前にあるステートメントで終了します。
目次 | 索引 |
|