Notes C API探訪: 環境変数
Notes/Dominoの環境変数とは、Notes.iniファイルに設定された変数値のことを指します。Notes C APIは基本的に初期化中は原則使えません。しかし、環境変数にアクセスするAPI関数は、初期化中でも呼び出すことができます。
OSGetEnvironmentString
OSGetEnvironmentString関数は、環境変数から値を取得します。
#include <osenv.h>
BOOL LNPUBLIC OSGetEnvironmentString (
const char far *VariableName,
char far *retValueBuffer,
WORD BufferLength);
#define MAX_ENVAPI_BUF_SIZE 32767
#define MAXENVVALUE 256
VariableNameは、環境変数名(ヌル終端文字列)を指定します。
retValueBufferとBufferLengthは、取得した文字列を格納する場所とサイズです。格納される文字列はヌル終端されています。
戻り値は、指定した変数名が見つかればTRUEを返します。
Notes C API リファレンスによると、環境変数の最大値についてはずいぶんとWindows環境に引っ張られているみたいです。無難なところではMAXENVVALUEになるでしょう。Notesクライアントでもあまり長い変数値は使えなかった記憶があります。
OSGetEnvironmentLong
OSGetEnvironmentLong関数は、環境変数値をlong値として受け取れます。
#include <osenv.h>
long LNPUBLIC OSGetEnvironmentLong (const char far *VariableName);
VariableNameは、環境変数名を指定します。
戻り値は、指定した変数の整数値です。見つからなかったり数値に変換できない時は0を返します。
OSGetEnvironmentInt
OSGetEnvironmentIntマクロは、環境変数値をint値として受け取れる、OSGetEnvironmentLong関数のキャストマクロです。
#include <osenv.h>
#define OSGetEnvironmentInt(s) ((int) OSGetEnvironmentLong(s))
VariableNameは、環境変数名を指定します。
戻り値は、指定した変数の整数値です。見つからなかったり数値に変換できない時は0を返します。
OSSetEnvironmentVariable
OSSetEnvironmentVariable関数は、指定した変数名で文字列値を設定します。
#include <osenv.h>
void LNPUBLIC OSSetEnvironmentVariable (
const char far *VariableName,
const char far *Value);
VariableNameは、環境変数名を指定します。
Valueは、設定する文字列(ヌル終端)です。
OSSetEnvironmentInt
OSSetEnvironmentInt関数は、指定した変数名で整数値を設定します。
#include <osenv.h>
void LNPUBLIC OSSetEnvironmentInt (
const char far *VariableName,
int Value);
VariableNameは、環境変数名を指定します。
Valueは、設定する整数値です。
OSGetExecutableDirectory
OSGetExecutableDirectory関数は、Notes/Dominoの実行ディレクトリを取得します。厳密には環境変数値ではありませんが、環境変数で「NotesProgram」の値を取得するのと同等なため、ここで紹介します。
#include <osfile.h>
void LNPUBLIC OSGetExecutableDirectory (char *retPathName);
retPathNameは、実行ディレクトリを受け取る場所を指定します。MAXPATH分のバッファを用意します。文字列はヌル終端されています。
OSGetDataDirectory
OSGetDataDirectory関数は、Notes/Dominoのデータディレクトリを取得します。厳密には環境変数値ではありませんが、環境変数で「Directory」の値を取得するのと同等なため、ここで紹介します。
#include <osfile.h>
WORD LNPUBLIC OSGetDataDirectory(char far *retPathName);
retPathNameは、実行ディレクトリを受け取る場所を指定します。MAXPATH分のバッファを用意します。受け取った文字列はヌル終端されています。
戻り値は、返されたデータディレクトリの文字列長を返します。
まとめ
環境変数は、Windowsのレジストリなどに比べて多機能ではなく旧式な感じもしますが、シンプル故に使い勝手がいいのも魅力です。Notes C APIでアドインを作る際にも、使い手の意図を伝える重要な手段なので、覚えておいても損はないでしょう。