当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2016年3月7日月曜日

環境変数を色々試してみた(2)値の取得

こんにちは。
雨が降っていたのに、防水用の靴を履いてこなかったおかげで、くつがびしょびしょです。お気に入りだったのに・・・
防水用のやつを買いに行かないと。


さて、前回の記事(環境変数を色々試してみた(1)値の設定)では、環境変数に値を設定する方法について説明しました。

今回は、環境変数の値を取得する方法について説明します。

1.取得方法(1) @関数の場合

notes.iniに設定した環境変数を取得する方法について記述します。
設定方法は@関数では、3種類ありましたが、取得方法は1つしかありません。
それには、@Environment関数を利用します。構文は下記の通り。
@Environment( variable )
variableは環境変数名を指定します。
""で囲えば直接指定できますし、囲わない場合はプログラム内の変数の値を指定できます。
ここで注意点が一つあります。
指定する環境変数名に「$」はつけないという事です。
@関数では、ユーザー環境変数しか扱えないため、自動で「$」がついているものに対してアクセスするため、不要なのです。
例)
@Environment("AA");
tmp := "BB";
@Environment(tmp);

1行目の場合、notes.iniの
$AA=xx
のxxを取得します。
2-3行目の場合、notes.iniの
$BB=xx
のxxを取得します。
これは設定方法の種類にかかわらず変わりません(@関数で設定しても、LotusScriptで設定しても同じ)。



2.取得方法(2) LotusScriptの場合

続いて、LotusScriptでの環境変数の取得方法について説明します。
設定方法は1つのメソッドしかありませんでしたが、取得方法は2つのメソッドが用意されています。

2-1.文字列で取得する

まずは、NotesSessionクラスのGetEnvironmentStringメソッドです。
構文は以下の通り。
value$ = notesSession.GetEnvironmentString( name$ [, system ] )
name$は環境変数名を指定します。
systemはシステム環境変数を取得するのか、ユーザー環境変数を取得するのかをTrue/Falseで指定します。
Trueがシステム環境変数、Falseがユーザー環境変数です。
戻り値はvalue$に文字列として返されます。
例)
Sub Click(Source As Button)
 Dim session As New NotesSession
 Dim ret     As     String
 
 ret = session.GetEnvironmentString( "EE", False )
 Msgbox ret, 0, "ユーザー環境変数の取得"
End Sub

上記の場合、notes.iniに設定してある$EEというユーザー環境変数の値を取得して、その値をプロンプト表示します。


2-2.Variant型で取得する

もう一つはNotesSessionクラスのGetEnvironmentValueメソッドです。構文は以下の通り。
valueV = notesSession.GetEnvironmentValue( name$ [, system ] )
name$は環境変数名を指定します。
systemはシステム環境変数を取得するのか、ユーザー環境変数を取得するのかをTrue/Falseで指定します。
と、ほとんどGetEnvironmentStringメソッドと同じです。
唯一違うのが戻り値で、Variant型で返ってきます。
例)
Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim ret     As     String
    
    ret = session.GetEnvironmentValue( "FF", True )
    Msgbox ret, 0, "システム環境変数の取得"
End Sub

上記の場合、notes.iniに設定してあるFFというシステム環境変数の値を取得して、その値をプロンプト表示します。

正直なところ、このメソッドの存在価値が私には分かりません。
環境変数には、文字、数値、日付が設定できるとのことですが、notes.iniはテキストファイルなので、文字列という形で格納されている事は変わりません。
わざわざVariantで取得するって・・・
まぁ、数値が格納してある場合は、型変換をしなくて済むというのがいいところでしょうか?(それでも、本当に数値になっているかどうかの確認は必要でしょうから文字列でいいんじゃ?)



3.注意点

さて、設定方法と取得方法についてみてきましたがいかがでしょうか?

3-1.注意点その1

環境変数には「ユーザー環境変数」と「システム環境変数」の2種類があることが分かってもらえたかと思います。
特に、@関数ではユーザー環境変数にしかアクセスできないという事も分かりました。

3-2.注意点その2

もう一つ、大事なことがあります。
システム環境変数の場合、環境変数名の大文字小文字が区別されるという事です。
例えば、
KANKYOUHENSUU

KankyouHensuu
とは違うものとして認識されます。
ユーザー環境変数の場合は、大文字小文字の区別はされません。
$USERVALUE

$UserValue
も同じ環境変数として認識されます。
プログラムでハードコーディングしている場合などは特に気を付ける必要があります。

3-3.注意点その3

さらに、環境変数にはもう一つの考え方があります。
notes.iniに対してアクセスしている事から想像できるように、環境変数はサーバとクライアントでそれぞれ持つことができます。
これは、環境変数に対してアクセスするプログラムがどこで動いているかによります。
Notes DB内で動作する場合は、通常Notesクライアントの環境変数にアクセスしています。
Dominoサーバの環境変数にアクセスするには、スケジュールエージェントなどのサーバ上で動作するプログラムを利用します。



他にも私が気が付いていないような注意事項があるかもしれません。
ご存知の方がいれば、コメントなど残してくれると嬉しいです。


それでは今日はこの辺で・・・



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: