実行時関数:現在の環境から指定した環境変数の値を得ます。
モジュール:USE DFLIB
形式
result = GETENVQQ (varname, value)
varname
(入力) CHARACTER*(*)。環境変数名。
value
(出力) CHARACTER*(*)。指定した環境変数の値 (大文字)。
結果
結果の型は INTEGER(4) です。結果は,value に返される文字列の長さです。指定した環境変数が定義されていない場合,ゼロが返されます。
GETENVQQ は,vername に対応するエントリに対して環境変数一覧を検索します。環境変数は,プロセスが実行される環境を定義します (たとえば,LIB 環境変数はプログラムとリンクするライブラリーの基本検索パスを定義します)。
GETENVQQ は C 実行時ルーチン getenv を使用し,SETENVQQ は C 実行時ルーチン _putenv を使用します。C のマニュアルには,以下の説明があります。
getenv と _putenv は,環境を参照するために大域変数 _environ が示す環境のコピーを使用します。getenv は,実行時ライブラリーが参照可能なデータ構造でのみ動作し,オペレーティング・システムがプロセス用に作成した環境セグメントでは動作しません。
主関数を使用するプログラムでは,_environ は,プログラム起動時に,オペレーティング・システムの環境から取り出した設定に初期化されます。
コンソールの SET コマンドでプログラム外から行われた変更は (たとえば,SET MY_VAR=ABCDE),GETENVQQ によって反映されます。
GETENVQQ と SETENVQQ は,Win32 API の GetEnvironmentVariable と SetEnvironmentVariable と一緒には正しく動作しません。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
! GETENVQQ と SETENVQQ の例 USE DFLIB INTEGER(4) lenv, lval CHARACTER(80) env, val, enval WRITE (*,900) ' Enter environment variable name to create, & modify, or delete: ' lenv = GETSTRQQ(env) IF (lenv .EQ. 0) STOP WRITE (*,900) ' Value of variable (ENTER to delete): ' lval = GETSTRQQ(val) IF (lval .EQ. 0) val = ' ' enval = env(1:lenv) // '=' // val(1:lval) IF (SETENVQQ(enval)) THEN lval = GETENVQQ(env(1:lenv), val) IF (lval .EQ. 0) THEN WRITE (*,*) 'Can''t get environment variable' ELSE IF (lval .GT. LEN(val)) THEN WRITE (*,*) 'Buffer too small' ELSE WRITE (*,*) env(:lenv), ': ', val(:lval) WRITE (*,*) 'Length: ', lval END IF ELSE WRITE (*,*) 'Can''t set environment variable' END IF 900 FORMAT (A, \) END