指定したアウトラインが正しいことを確認し、そのアウトラインで検出したエラーの配列を構築します。この関数は、グローバル・アウトライン・エラーおよび不正なメンバーそれぞれのエラーの両方を戻します。
構文
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); }
関連トピック