指定したアウトラインが正しいことを確認し、そのアウトラインで検出したエラーの配列を構築します。この関数は、グローバル・アウトライン・エラーおよび不正なメンバーそれぞれのエラーの両方を戻します。
構文
ESS_FUNC_M
EssOtlVerifyOutlineEx
(
hOutline, pulErrors, pulCount, pMbrErrors
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hOutline |
ESS_HOUTLINE_T |
アウトラインのコンテキスト・ハンドル。 |
pulErrors |
ESS_PULONG_T |
グローバル・アウトライン・エラーのビットマスク宛先を指すポインタ。アウトラインに式のエラーがある場合、値のある唯一のフィールドは次のようになります: ESS_OUTERROREX_OUTLINEHASFORMULAERROR |
pulCount |
ESS_PULONG_T |
エラーのあるメンバーの数。pMbrErrors配列の要素数を定義します。アウトラインにエラーがある場合、エラーはビットマスクになります。アウトラインに式のエラーのみがある場合、pMbrErrorフィールドはエラー番号(ulErrors)と行番号(ulErrors2)から構成されます。この場合、pulErrorsがESS_OUTERROREX_OUTLINEHASFORMULAERRORに設定されます。 |
pMbrErrors |
ESS_OUTERROR_T |
*pulCountメンバーのある配列を指すポインタ。配列の各要素には、単一のメンバーのエラーが含まれています。 |
備考
この関数はEssOtlVerifyOutlineを呼び出します。呼出しが正常終了すると、次に数式を含む各メンバーに対してEssOtlVerifyFormulaを呼び出し、式にエラーがあれば、出力エラー配列に含みます。EssOtlVerifyOutline()の呼出しが正常終了しなかった場合、この関数はEssOtlVerifyOutline()とまったく同じ機能になります。
この関数では、次の点が確認されます:
共有メンバーにおけるユーザー属性の重複。
重複するレベル名、世代名または別名。
属性の追加および関連付けに関する制限。
pMbrErrors配列を解放するには、EssFree()を使用します。
戻り値
正常終了の場合は0が戻されます。それ以外の場合は、次のいずれかの値が戻されます:
OTLAPI_ERR_OPENMODE
OTLAPI_BAD_HOUTLINE OTLAPI_NULL_ARG
例
ESS_STS_T TestVerifyOtlEx(ADT_CMDCTX_T *cmdctxp)
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_STS_T sts2 = ESS_STS_NOERR;
ESS_SHORT_T hOutline;
ESS_ULONG_T ulErrors;
ESS_ULONG_T ulCount;
ESS_POUTERROR_T pMbrErrors;
ESS_ULONG_T ind;
ESS_PMBRINFO_T ppMbrInfo;
if (cmdctxp->cmdbuf.argn < 2)
{
hOutlineChoice = ishOutlineMenu(cmdctxp);
}
else
{
hOutlineChoice = atoi(*(cmdctxp->cmdbuf.args + 1));
}
sts = EssOtlVerifyOutlineEx(cmdctxp->hOutline[hOutlineChoice], &ulErrors,
&ulCount, &pMbrErrors);
if (sts == ESS_STS_NOERR)
{
fprintf(cmdctxp->output, "\n------Global Errors------\n");
if (ulErrors & ESS_OUTERROR_CURTOOMANYDIMS)
{
fprintf(cmdctxp->output, "Too many dimensions in currency outline\n");
}
else if(ulErrors & ESS_OUTERROR2_ATTRCALCABSENT)
{
fprintf(cmdctxp->output, "Attribute calculations dimension is absent\n");
}
else if(ulErrors & ESS_OUTERROREX_OUTLINEHASFORMULAERROR)
{
fprintf(cmdctxp->output, "Outline has formula error\n");
}
else if (ulErrors == 0)
{
fprintf(cmdctxp->output, "No errors\n");
}
else
{
fprintf(cmdctxp->output, "Unknown error\n");
}
fprintf(cmdctxp->output, "\n------Member Errors------\n");
if(ulErrors != ESS_OUTERROREX_OUTLINEHASFORMULAERROR)
{
for (ind = 0; ind < ulCount; ind++)
{
sts2 = EssOtlGetMemberInfo(cmdctxp->hOutline[hOutlineChoice],
pMbrErrors[ind].hMember, &ppMbrInfo);
if (sts2 == ESS_STS_NOERR)
{
fprintf(cmdctxp->output, "Member: %s\n", ppMbrInfo->szMember);
EssFree(cmdctxp->hInst, ppMbrInfo);
}
else
{
fprintf(cmdctxp->output, "Member: Unknown member\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_ILLEGALNAME)
{
fprintf(cmdctxp->output, " ESS_OUTERROREX_OUTLINEHASFORMULAERROR\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_DUPLICATENAME)
{
fprintf(cmdctxp->output, " ESS_OUTERROR_DUPLICATENAME\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_ILLEGALCURRENCY)
{
fprintf(cmdctxp->output, " ESS_OUTERROR_ILLEGALCURRENCY\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_ILLEGALDEFALIAS)
{
fprintf(cmdctxp->output, " ESS_OUTERROR_ILLEGALDEFALIAS\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_ILLEGALCOMBOALIAS)
{
fprintf(cmdctxp->output, " ESS_OUTERROR_ILLEGALCOMBOALIAS\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_ILLEGALALIASSTRING)
{
fprintf(cmdctxp->output, " ESS_OUTERROR_ILLEGALALIASSTRING\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_ILLEGALTAG)
{
fprintf(cmdctxp->output," ESS_OUTERROR_ILLEGALTAG\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_NOTIMEDIM)
{
fprintf(cmdctxp->output," ESS_OUTERROR_NOTIMEDIM\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_DUPLICATEALIAS)
{
fprintf(cmdctxp->output," ESS_OUTERROR_DUPLICATEALIAS\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_MEMBERCALC)
{
fprintf(cmdctxp->output," ESS_OUTERROR_MEMBERCALC\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_SHARENOTLEVEL0)
{
fprintf(cmdctxp->output," ESS_OUTERROR_SHARENOTLEVEL0\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_NOSHAREPROTO)
{
fprintf(cmdctxp->output," ESS_OUTERROR_NOSHAREPROTO\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_TIMESPARSE)
{
fprintf(cmdctxp->output," ESS_OUTERROR_TIMESPARSE\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_LEAFLABEL)
{
fprintf(cmdctxp->output," ESS_OUTERROR_LEAFLABEL\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_ALIASSHARED)
{
fprintf(cmdctxp->output," ESS_OUTERROR_ALIASSHARED\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_BADTIMEBAL)
{
fprintf(cmdctxp->output," ESS_OUTERROR_BADTIMEBAL\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_BADSKIP)
{
fprintf(cmdctxp->output," ESS_OUTERROR_BADSKIP\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_BADSHARE)
{
fprintf(cmdctxp->output," ESS_OUTERROR_BADSHARE\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_BADSTORAGE)
{
fprintf(cmdctxp->output," ESS_OUTERROR_BADSTORAGE\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_BADCATEGORY)
{
fprintf(cmdctxp->output," ESS_OUTERROR_BADCATEGORY\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_BADSTORAGECATEGORY)
{
fprintf(cmdctxp->output," ESS_OUTERROR_BADSTORAGECATEGORY\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_SHAREDMEMBERFORMULA)
{
fprintf(cmdctxp->output," ESS_OUTERROR_SHAREDMEMBERFORMULA\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_SHAREUDA)
{
fprintf(cmdctxp->output," ESS_OUTERROR_SHAREUDA\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_DUPGENLEVNAME)
{
fprintf(cmdctxp->output," ESS_OUTERROR_DUPGENLEVNAME\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_VIRTLEV0NOFORMULA)
{
fprintf(cmdctxp->output," ESS_OUTERROR_VIRTLEV0NOFORMULA\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_VIRTBADPARENT)
{
fprintf(cmdctxp->output," ESS_OUTERROR_VIRTBADPARENT\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_VIRTBADCHILD)
{
fprintf(cmdctxp->output," ESS_OUTERROR_VIRTBADCHILD\n");
}
if (pMbrErrors[ind].ulErrors & ESS_OUTERROR_VIRTWHOLEDIMVIRTUAL)
{
fprintf(cmdctxp->output," ESS_OUTERROR_VIRTWHOLEDIMVIRTUAL\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_NOTLEVEL0)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_NOTLEVEL0\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_LEVELMISMATCH)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_LEVELMISMATCH\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALORDER)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALORDER\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALDATATYPE)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALORDER\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_DATATYPEMISMATCH)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_DATATYPEMISMATCH\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALATTRIBUTEPARENT)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALATTRIBUTEPARENT\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ATTRDIMNOTASSOCIATED)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ATTRDIMNOTASSOCIATED\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALUDA)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALUDA\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_CHILDCOUNT)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_CHILDCOUNT\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALATTRCALC)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALATTRCALC\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_DUPLICATEATTRCALC)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_DUPLICATEATTRCALC\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALATTRSET)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALATTRSET\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALATTRCALCSET)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALATTRCALCSET\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_NOTATTRIBUTE)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_NOTATTRIBUTE\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ATTRCALCABSENT)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ATTRCALCABSENT\n");
}
if (pMbrErrors[ind].ulErrors2 & ESS_OUTERROR2_ILLEGALATTRVALUE)
{
fprintf(cmdctxp->output," ESS_OUTERROR2_ILLEGALATTRVALUE\n");
}
}
}
if(ulErrors != ESS_OUTERROREX_OUTLINEHASFORMULAERROR)
{
for (ind = 0; ind < ulCount; ind++)
{
sts2 = EssOtlGetMemberInfo(cmdctxp->hOutline[hOutlineChoice],
pMbrErrors[ind].hMember, &ppMbrInfo);
if (sts2 == ESS_STS_NOERR)
{
fprintf(cmdctxp->output, "Member: %s\n", ppMbrInfo->szMember);
EssFree(cmdctxp->hInst, ppMbrInfo);
}
else
{
fprintf(cmdctxp->output, "Member: Unknown member\n");
}
fprintf(cmdctxp->output, "Error %d at line %d\n", pMbrErrors[ind].ulErrors, pMbrErrors[ind].ulErrors2);
}
}
if (ulCount == 0)
{
fprintf(cmdctxp->output, "No errors\n");
}
EssFree(cmdctxp->hInst, pMbrErrors);
}
fprintf(cmdctxp->output, "\nsts: %ld\n\n", sts);
return(sts);
}
関連トピック