指定したランタイム代替変数(キー/値ペアの文字列として指定)を使用して計算スクリプトを実行します。計算を開始することも、計算スクリプトの確認のみを行い、エラーがあれば戻すこともできます。
構文
ESS_FUNC_M EssCalcWithRuntimeSubVars ( hCtx , CalcScript , RtSV , Calculate );
パラメータ | データ型 | 説明 |
---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
CalcScript |
ESS_STR_T |
単一文字列としての計算スクリプト。 計算スクリプトの文字列は64KBを超えることはできません。 |
RtSV |
ESS_STR_T |
ランタイム代替変数のキー/値ペアを指定する文字列。文字列は一重引用符で囲み、キー/値ペアはセミコロンで区切る必要があります。このランタイム代替変数文字列の例では、4つのランタイム代替変数の名前と値が指定されています(たとえば、"a"という名前のランタイム代替変数の値は100です): 'a=100;b=@CHILDREN("100");c="Actual"->"Final";d="New York";' |
Calculate |
ESS_BOOL_T |
計算スクリプトの計算を制御します。TRUEの場合は、計算スクリプトが実行され、呼出しは非同期になります。 |
備考
この関数が正しく実行され、計算が開始されると、この呼出しから戻った後も、サーバー上で非同期プロセスとして続行されます。呼出し元はESS_STATE_DONEが戻されるまでEssGetProcessStateを呼び出して、プロセスが完了したことを定期的に確認する必要があります。
このAPI呼出しはCalculateパラメータがTRUEの場合にのみ非同期になります。それ以外の場合、呼出しは単純な同期要求です。
非同期要求中は、要求の完了前に、制御がプログラムにすぐに戻されます。非同期要求の実行中は、現在のAPIコンテキスト・ハンドルに有効な要求のセットは限定されます。その間に無効な要求が行われると、エラーが戻されます。非同期操作中のAPIコンテキストに対して有効なAPI呼出し: EssGetProcessState、EssCancelProcess。
CalculateパラメータがFALSEに設定されている場合、データベースは計算スクリプトの構文チェックのみを行い、呼出しは同期です。
戻り値
なし。
アクセス
この関数を呼び出すには、アクティブ・データベースに対する計算権限(ESS_PRIV_CALC)が必要です。
例
ESS_FUNC_M ESS_CalcWithRuntimeSubVars(ESS_HCTX_T hCtx) { ESS_FUNC_M sts = ESS_STS_NOERR; ESS_STR_T Script; ESS_STR_T ParamString = "mySales=700;myCOGS=100;"; ESS_PROCSTATE_T pState; Script = "SET RUNTIMESUBVARS {salesNum =400; mySales=300; myRTVar=@CHILDREN(\"100\"); kmdsdmclms=@TODATE(\"DD/MM/YY\",\"10/11/12\"); myCOGS=50;};FIX (@INTERSECT(&myRTVar, \"100-10\")) Sales = &mySales; COGS=&myCOGS; ENDFIX;"; sts = EssCalcWithRuntimeSubVars(hCtx, Script, ParamString, ESS_TRUE); if (!sts) printf ("\r\nAPI EssCalcWithParam executed successfully...\r\n\r\n"); }
関連トピック