GETENVQQ

実行時関数:現在の環境から指定した環境変数の値を得ます。

モジュール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 によって反映されます。

GETENVQQSETENVQQ は,Win32 API の GetEnvironmentVariableSetEnvironmentVariable と一緒には正しく動作しません。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

GETLASTERRORQQSETENVQQ

	! 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