集約ストレージ・データベース上でカスタム計算を実行または検証します。
構文
ESS_FUNC_M EssPerformCustomCalcASO (
hCtx, verifyOnly, errorList, calcStruct
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
verifyOnly |
ESS_BOOL_T |
計算を実行せずに検証するかどうかを示すフラグ。ESS_TRUEに設定されている場合、計算は検証のみ行われます。ESS_FALSEに設定されている場合、計算は検証および実行されます。 |
errorList |
ESS_PERF_ALLOC_ERROR_T** |
カスタム計算に関するエラー情報を含むAPIによって移入されて戻されるエラー構造体のリンク・リストへのポインタ。この引数は0にできません。リンク・リストはクライアントによって解放される必要があります。 |
calcStruct |
ESS_PERF_CUSTCALC_T* |
クライアントが割り当てたカスタム計算構造体およびパラメータへのポインタ。 |
戻り値
正常終了の場合は0が戻され、それ以外はエラーが戻されます。
例
void HandleErrors(ESS_HINST_T hInst, ESS_PERF_ALLOC_ERROR_T **pErrorList)
{
if (pErrorList)
{
ESS_PERF_ALLOC_ERROR_T *errorList = *pErrorList;
ESS_PERF_ALLOC_ERROR_T *nextError;
while (errorList)
{
printf("Error number %ld occurred\n", errorList->messageNumber);
if (errorList->argument != ESS_PERF_ALLOC_ARG_NA)
printf(" in argument %d\n", errorList->argument);
if (errorList->lineNumber)
printf(" on line %ld\n", errorList->lineNumber);
if (errorList->token[0] != '\0')
printf(" on token %s\n", errorList->token);
nextError = errorList->nextError;
ESS_STS_T sts = EssFree (hInst, errorList);
printf("\nEssFree sts for errorList %ld\n",sts);
errorList = nextError;
}
*pErrorList = NULL;
}
}
void ESS_GLCustomCalc()
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_BOOL_T verifyOnly;
ESS_PERF_ALLOC_ERROR_T *errorList = ESS_NULL;
ESS_PERF_CUSTCALC_T *calcStruct;
sts = EssAlloc (hInst, sizeof(ESS_PERF_CUSTCALC_T), (ESS_PPVOID_T)&calcStruct);
printf("EssAlloc sts for calcStruct: %ld\n", sts);
sts = EssAlloc (hInst, sizeof(ESS_PERF_CUSTCALC_T), (ESS_PPVOID_T)&calcStruct);
printf("EssAlloc sts: %ld\n", sts);
verifyOnly = ESS_FALSE;
errorList = ESS_NULL;
calcStruct->pov = "{[1120], [1130]}";
calcStruct->script = "[Jan-96] := ([Feb-08], [041509GR PL2], [00], [[All Department Values]].[000]]], [0000], [[All Product Values]].[000]]], [Actual], [Beginning Balance Dr], [BASE], [USD], [Total]);";
calcStruct->target = "([041509GR PL2], [00], [[All Department Values]].[000]]], [0000], [[All Product Values]].[000]]], [Actual], [BASE], [USD], [Total])";
calcStruct->debitMember = "[Beginning Balance Dr]";
calcStruct->creditMember = "[Beginning Balance Cr]";
calcStruct->offset = "";
calcStruct->sourceRegion = "{([Feb-08], [041509GR PL2], [00], [[All Department Values]].[000]]], [0000], [[All Product Values]].[000]]], [Actual], [Beginning Balance Dr], [BASE], [USD], [Total])}";
calcStruct->groupID = 0;
calcStruct->ruleID = 0;
sts = EssPerformCustomCalcAso(hCtx, verifyOnly, &errorList, calcStruct);
printf("EssPerformCustomCalcAso sts: %ld\n",sts);
HandleErrors(hInst, &errorList);
if(calcStruct)
{
sts = EssFree (hInst, calcStruct);
printf("EssFree sts for allocStruct %ld\n",sts);
}
}