外部コマンドのプログラミングインタフェースには、次に示すような関数があります。
重要: これらの関数にはICMD.NLMのバージョン2.18以上が必要です。
ICMDSetVar関数は、スクリプトの変数の値をプログラムで設定する際に使用します。
int ICMDSetVar (char *variableName, char *variableValue)
*variableName: 設定する変数の名前へのポインタ
*variableValue: 設定する変数の値を表す文字列へのポインタ
成功した場合は0が、成功しなかった場合には0以外のエラーコードが返されます。
ICMDSetVarは、ICMD.NLMからエクスポートされた関数であり、別のNLMから(阻止NLMExecコマンド内などで)呼び出すことができます。この関数により、NLMはICMD.NLMが実行しているスクリプト内の変数を設定できるため、このスクリプトと通信を行い、制御フローを変更したりできます。
MYNLM.NLMに次のようなコードが含まれ、
ICMDSetVar("mynlmvar", "hello world"); exit();
スクリプトが次のように記述されている場合、
NLMExec 1, mynlm
Display 0, "Information: %{mynlmvar}"
次のポップアップテキストボックスが表示されます。
Information: hello world
ICMDGetVar関数は、スクリプトの変数の値を取得するために使用します。
int ICMDGetVar (char *variableName, char *variableValue)
*variableName: 変数の名前へのポインタ
*variableValue: 変数の値を収めるバッファ(128バイト以上必要)
成功した場合は0が返されます。成功しなかった場合、または変数variableNameが存在しなかった場合には、0以外のエラーコードが返されます。
ICMDGetVarは、ICMD.NLMからエクスポートされた関数であり、他のNLMから呼び出すことができます。この関数により、NLMはICMD.NLMが実行しているスクリプト内の変数を設定できるため、このスクリプトと通信を行い、制御フローを変更したりできます。
スクリプトが次のように記述され、
SetVar myvar, "Hello"
NLMExec 1, mynlm
MYNLM.NLMに次のようなコードが含まれている場合、
char buffer[128];
ICMDGetVar("myvar", buffer);
バッファに入る値は、NULLで終わる次の文字列になります。
"Hello"