単一の文字列を送信します。この関数は、EssBeginCalcを呼出し、次にEssSendStringを呼び出して、最後にEssEndCalcを呼び出すのと同じです。計算を開始することも、計算スクリプトの確認のみを行い、エラーがあれば戻させることもできます。
構文
ESS_FUNC_M EssCalc (
hCtx, Calculate, CalcScript
);
パラメータ | データ型 | 説明 |
---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
Calculate |
ESS_BOOL_T |
計算スクリプトの計算を制御します。TRUEの場合は、計算スクリプトが実行され、呼出しは非同期になります。 |
CalcScript |
ESS_STR_T |
単一の文字列としての計算スクリプト(64KB未満)。 |
備考
計算スクリプトの文字列の長さは、64KB未満にする必要があります。
この関数が正しく実行され、計算を開始すると、この呼出しから戻った後も、サーバー上で非同期プロセスとして続行します。呼出し元はESS_STATE_DONEが戻されるまでEssGetProcessStateを呼び出して、プロセスが完了したことを定期的に確認する必要があります。
このAPI呼出しはCalculateパラメータがTRUEの場合にのみ非同期になります。それ以外の場合は、簡単な同期要求です。
非同期要求中は、要求の完了前に、制御がプログラムにすぐに戻されます。非同期要求の実行中は、現在のAPIコンテキスト・ハンドルに有効な要求のセットは限定されます。その間に無効な要求を渡すと、エラーが戻されます。非同期操作中のAPIコンテキストに有効なAPI呼出しは次のとおりです: EssGetProcessState、EssCancelProcess。
CalculateフラグがFALSEに設定されている場合、データベースは計算スクリプトの構文チェックのみを行い、呼び出しは同期です。
戻り値
なし。
アクセス
この関数を使用するには、呼出し元はアクティブなデータベースに対して計算権限(ESS_PRIV_CALC)を持っている必要があります。
例
ESS_FUNC_M ESS_CalcLine (ESS_HCTX_T hCtx) { ESS_FUNC_M sts = ESS_STS_NOERR; ESS_STR_T Script; ESS_PROCSTATE_T pState; Script = "CALC ALL;"; sts = EssCalc(hCtx, ESS_TRUE, Script); if (!sts) { sts = EssGetProcessState (hCtx, &pState); while (!sts && (pState.State != ESS_STATE_DONE)) sts = EssGetProcessState (hCtx, &pState); } return(sts); }
関連トピック