************************************************** DB2 OLAP Server V1.1 October 1999 Readme file for Fixpack 7 ************************************************** This file describes problems corrected by Fixpack 7 for DB2 OLAP Server Version 1.1. For instructions on downloading and installing this fixpack, see the readme.1st file, also stored at this FTP site. Fixpack 7 for DB2 OLAP Server Version 1.1 is the equivalent of patch 7 for Arbor Essbase Version 5.0.2. Essbase patches are cumulative; patch 7 contains new fixes plus the fixes found in patches 1 through 6. Please note that Arbor Software Corporation has merged with Hyperion Software Corporation to form Hyperion Solutions Corporation. Information in this readme file reflects this name change. This file also contains information regarding Hyperion Integration Server as it relates to DB2 OLAP Server. CONTENTS ======================================================================= This readme file contains the following information: Problems fixed in Patch 7 Problems fixed in Patch 6 Problems fixed in Patch 5 Problems fixed in Patch 4 Problems fixed in Patch 3 Problems fixed in Patch 2 Problems fixed in Patch 1 Documentation Updates: UNIX Secure Password Script SQL Source Connectivity Enhanced Member Querying with New APIs PROBLEMS FIXED IN PATCH 7 ======================================================================= Memory Leak Occurs with Consecutive, Repeated Retrievals: This fix requires a client upgrade. Consecutive, repeated retrievals in Excel Spreadsheet Add-in cause a memory leak. Viewing the Application Log by a Specified Date May Not be Successful When Error #1013104 is Present in the Log: When error #1013104 (invalid member name) is recorded in the application log, an attempt to view the log records by a specific date may be unsuccessful. In the Formula Editor, a Syntactically Incorrect Formula Passes Syntax Validation, but Disappears after a Save: The Formula Editor validates a member formula that has incorrect syntax, but after the outline has been saved the formula disappears. With this fix, the formula does not get truncated or disappear. When the outline is saved to the server, one error message is recorded in the application log file and another error message is inserted into the member comment field. The formula is ignored during calculation. The error can be seen only if the outline is closed and reopened. To fix the member formula: 1. Delete the error message from the member comment field using the member properties box and save the outline. 2. Revise the formula in the database outline. 3. Close the outline and reopen it. 4. Look in the application log for an error message. 5. Look in the member comment field to ensure that there is no error message recorded and that the formula is valid. Renaming Any Member When Outline Logging is Set to True Causes the Server to Crash: When the OUTLINECHANGELOG parameter is set to True, an attempt to rename a member in the database outline causes the server to crash. Progressive Memory Leak on Successive Dimension Builds: During dimension builds, memory leaks in the calc data structure and the outline API. With "Create Blocks on Equation" Database Setting Enabled, Running a Certain Calc Script on a Database with Many Dynamic Calc Members Crashes the Application: For a particular database, the application crashes during a calculation with the following calc script, with "Create Blocks on Equation" enabled: Set cache high; Set Aggmissg On; Set Frmlbottomup On; Set Updatecalc off; Calc all; Spreadsheet Retrieval Causes Application Server Crash: Comments longer than 255 characters in the Hyperion Essbase Spreadsheet Add-in causes the application to crash. Supervisors are Unable to Log into the Application Using the Reserve Port: Supervisors are unable to log into the application using the reserve port but users are successful in logging in through the reserve port. Server Crash Occurs When Viewing Database Statistics: A server crash occurs after selecting Database > Information > Statistics tab in Application Manager. Data Load from Certain Erroneous Data Files Crash the Server: Loading data from a data file containing duplicate member names (or other errors) crashes the server. PROBLEMS FIXED IN PATCH 6 ======================================================================= In addition to bug fixes, Patch 6 contained two new C Outline API functions, and one new structure. These support Enhanced Member Queries, and are needed for integration with Hyperion applications. Data Load and Spreadsheet Add-in Retrievals Fail with "Unknown Member" Errors, for Members that Exist: A data load from a Lotus 1-2-3 file fails with an "Unknown Member" error when it encounters a member name with an underscore in the data file. Spreadsheet Add-in retrievals on aliases fail with an "Unknown Member" for particular members in Excel, when the alias has spaces or underscores. PROBLEMS FIXED IN PATCH 5 ======================================================================= System Password Visible on HP-UX and Solaris Using ps -ef: Users can view the Essbase system password on HP-UX and Solaris when using the ps (process status) utility with options -ef to view a full listing of all current processes. With this patch, you can hide the system password from the UNIX process listing by creating a shell script through which to launch Hyperion Essbase. For more information, see UNIX Secure Password Script. Data Retrieval on Large Dimension Through Excel Spreadsheet Add-in is Slow: In the Spreadsheet Add-in, data retrieval on large dimensions in certain outlines takes longer than it did in Release 4.12. ESSCMD Scripts Containing Embedded Quote Characters Fail in Japanese Locale: This fix requires a client upgrade. ESSCMD scripts that use backslashes (\) for embedding quotes fail when they are run in the Japanese locale. Files Named With More Than 8 Characters Cannot be Opened: This fix requires a client upgrade. An attempt to open files with names longer than 8 characters through the Application Manager returns an error message. Numerous Connections and Disconnections Could Result in Users Being Logged Off: Continual connections and disconnections through the Excel Spreadsheet Add-in may result in users being randomly logged off of the Hyperion Essbase Server. ESSLANG Language-Environment Variable is Not Documented: Information about the Hyperion Essbase ESSLANG environment variable is missing from Release 5.0.2 documentation. English versions of Hyperion Essbase are already set by default to use the correct code page. For non-English versions of the client and server, you need to set the ESSLANG variable (which defines the code page) to be the same on both the client and the server. The ESSLANG variable can be a user variable or a system variable. If $ARBORPATH is defined as a system variable, create ESSLANG as a system variable also. If $ARBORPATH is defined as a user variable, create ESSLANG as a user variable. ESSLANG settings should follow this format: ESSLANG= where is a supported Uniscape GlobalC locale of the format _.@ Here is an example of a Japanese ESSLANG environment variable setting: ESSLANG=Japanese_Japan.MS932@binary Supported locales, and more information about code pages, are listed on the Uniscape page at: http://www.uniscape.com/technology/global_c_locales.htm Replicated Partition Shows Incorrect Values when Aggregate Missing Values is OFF: After replicating data, if the Aggregate Missing Values option is disabled, the target partition shows incorrect values. If the Aggregate Missing Values option is enabled, then zeros were substituted for #MISSING values. Dimension Build Using a Microsoft Access Data File and a Rules File Fails: This fix requires a client upgrade. A dimension build using a Microsoft Access data file and a rules file fails when the dimension building field names are defined in the Access data file. Operations on Invalid Spreadsheets Cause Application to Shut Down: Particular operations on invalid spreadsheet views (ambiguous member combinations) cause abnormal shutdowns of the application. With this patch, the crashes are prevented and an error message is displayed. Application Manager crashes When There is a Large Amount of Text in the Area Definition of the Partition Wizard: This fix requires a client upgrade. During partitioning, if the text in the area definition is more than 4K, the Application Manager crashes when validating or saving the partition definition. With Low Virtual Memory, Restructuring All-Dense Databases Crashes Application: On certain systems with low virtual memory, loading and restructuring a database with all dense dimensions causes the application to crash with an "unable to reallocate memory" message. This fix prevents the crash. LISTLINKEDOBJECTS ESSCMD Returns Wrong Modification Date for the Object: This fix requires a client upgrade. The LISTLINKEDOBJECTS ESSCMD returns an incorrect modification date after the date on the client and server is changed to 2000. LISTLINKEDOBJECTS and PURGELINKEDOBJECTS ESSCMDs Fail to Recognize Leap Year 2/29 as Input for the modDate Parameter: This fix requires a client upgrade. The LISTLINKEDOBJECT and PURGELINKEDOBJECT ESSCMD commands do not recognize 02/29/2000 as a valid date input. On NT with Certain Non-English Regional Settings, Excel Spreadsheet Add-in Returns Failed in GCSetLocale() Error: This fix requires a client upgrade. When running on NT with certain non-English Regional Settings, the Hyperion Essbase Spreadsheet Add-in returns a Failed in GCSetLocale() error. With this fix, when Hyperion Essbase runs on NT configured with a Regional Setting for a language that is not supported by GlobalC locales, it will (1) first try to use the operating system's locales, or (2) failing that, give a warning message and default to English (United States). After Using the @PRIOR Function in a Calc Script, Database Statistics Indicate that an Extra Level-0 Block Has Been Created: The @PRIOR function used in a calc script (with Create Block on Equation unchecked in Database Settings) may result in Database Statistics showing an extra level-0 block. A Calculation with Calculator Cache On Returns Different Values than the Same Calculation Run with the Calc Cache Turned Off: A calc script using arrays is calculated incorrectly when Calculator Cache is used; for example, by including the following lines in the ESSBASE.CFG file: CALCCACHEHIGH 30000000 CALCCACHEDEFAULT 10000000 CALCCACHELOW 5000000 The @ANCESTVAL Function Returns Wrong Values when Level References are Used: The @ANCESTVAL function returns the wrong values when the input for the genLevNum parameter is a negative value, which defines a level reference. When First Disk Volume has Too Little Space, Loading a Database Configured with Multiple Disk Volumes Fails after Creation of First Index File: When a database is configured with multiple disk volumes and the creation of that database's first index file fails due to lack of disk space, Hyperion Essbase does not write to the remaining allocated disk volumes. The problem does not occur if there is already at least one index file or if there is so little disk free space on the first disk volume such that the first index file cannot be created at its creation size of 2 KB. With the Excel Spreadsheet Add-in, Lock and Sends or Retrievals in Certain Spreadsheets Cause the Application to Crash: With the Excel Spreadsheet Add-in, certain lock and send or retrieval operations cause the application to crash. Renaming a Member and its Shared Member with OUTLINECHANGELOG TRUE in the ESSBASE.CFG file Crashes the Application: After renaming a member and its shared member with outline change logging turned on, saving the outline crashes the application. Using Member Select by Generation Name Causes Application Crash: In the Spreadsheet Add-in, using Member Select to view members by generation name when the members are Dynamic Time Series (DTS) or shared causes the application to shutdown. In Some Scenarios, Calculation of Dense Dynamic Calc Members May be Incorrect in Excel Spreadsheet Add-in Retrievals: Dense dynamic calculations sometimes produce incorrect results during data retrieval in Spreadsheet Add-in. Dynamic Calc with Time Balance Last Returns Incorrect Values: Time Balance Last account totals for dynamically calculated periods show incorrect values under the following conditions: 1. The Time dimension is sparse 2. No data exists for some of the members (for example, Qtr4) that roll up into the dynamically calculated periods. PROBLEMS FIXED IN PATCH 4 ======================================================================= On UNIX, HTML Documentation has Broken Links and Missing Graphics: On UNIX, the online Technical Reference and API Reference documents contain broken links and missing graphics. To fix this problem, you must choose Yes to install the HTML docs as part of your API or Application Manager installation. Current Time Displays Only Day and Year in the Japanese Version of Application Manager: The date display for the Japanese version of the Application Manager excludes the month. The Application Manager Crashes if a Substitution Variable in a Calc Script Exceeds the Maximum Number of Characters: An attempt to perform a syntax check on a Calc Script containing a substitution variable with more than 256 characters crashes the Application Manager. Report Scripts Freeze When Launched from the Server Using the ESSCMD RUNREPT Command: An attempt to run a report script on a remote server from ESSCMD fails because of a file input/output problem on the server. Replicated Partition Shows Incorrect Values when Aggregate Missing Values is OFF: After replicating data, if the Aggregate Missing Values option is disabled, the target partition shows incorrect values. If the Aggregate Missing Values option is enabled, then zeros were substituted for #MISSING values. LOGOUTUSER Agent Command Doesn't Log Out the Specified User: When an administrator issues the LOGOUTUSER command against an active user, the Agent window reports that the user is not logged in. Other users are incorrectly logged out. Long URL as Linked Reporting Object on a Data Cell Won't Truncate, and Causes the Spreadsheet to Crash: This fix requires a client upgrade. A long URL (in this case, a URL with about 300 characters) attached to a cell as a Linked Reporting Object won't truncate. If other LROs are attached to the same cell, the spreadsheet crashes when you select Essbase|Linked Objects for that cell. The EsbGetActive Function Truncates Database Names by One Character: The API function, EsbGetActive, truncates database names to seven characters even though the limit is set to eight characters. Unable to Reallocate Memory when Restructuring an Outline: Restructuring certain large outlines fails with a memory allocation error. Calc Script with Formula Assigned to a Member on a Sparse Dimension Returns Wrong Result with the "Create Blocks on Equation" Option Enabled: A formula in a calc script that calculates a regular member on a sparse dimension member that has Dynamic Calc children (for example, Year = Qtr1 + Qtr2, where Qtr1 and Qtr2 are Dynamic Calc) returns a value of 0 instead of the calculated value. This problem occurs when the "Create Blocks on Equation" option is checked. Users Can Add Members to a Group Beyond their Privileges, and the Members Disappear: A User with only Create/Delete Users privilege can add members to a group with Application Designer privilege for Sample Basic, but the members disappear from the group's list of members. With this fix, users who attempt to add members to a group with higher privileges, or to a group created by a supervisor, will get an error message. Default Calc using @PARENTVAL in a Formula on a Dynamic Calc Member Crashes the Application when Dynamic Time Series Members are Enabled: When the @PARENTVAL function is used in a formula on a Dynamic Calc member to calculate a particular database that has Dynamic Time Series members enabled, the application shuts down abnormally. Member Names in Outline Cannot Be Edited Using Ctrl + X, C, and V Keys: This fix requires a client upgrade. Outline member names could be cut, copied, and pasted using the Windows standard Ctrl + key combinations in Release 1.0.1, but not in Release 1.1. DISABLELOGIN Prevents Application Connections by Users with Application Designer Privileges: Issuing the DISABLELOGIN ESSCMD command prevents users with Application Designer privileges from making certain connections to the application: for example, an error is returned after the GETDBSTATE ESSCMD command is issued from within a batch program. Dynamic Calculation Functions Incorrectly When Level-0 Members are Removed: The @ACCUM function, when applied to a Dynamic Calc member, may yield incorrect results if the query specifies only part of the defined range. Importing an Outline Does Not Work in Application Manager: This fix requires a client upgrade. Selecting Import|Outline after exporting it and deleting the members fails to restore the outline. Data Load Stops, or is Incomplete for Other Records, After a Faulty Record is Encountered in the Input File: A data load terminates after encountering a record containing duplicate members from the same dimension. Unless "Abort on Error" is Selected, the data load should continue, but generate errors for the faulty records. Outline of Data Target is Not Synchronized when Members are Rearranged: Rearrangement of members in the data source outline may not be reflected accurately in the data target outline after synchronization. Selecting a Dynamic Time Series Member from List Box Causes Application Manager to Crash: This fix requires a client upgrade. On a particular outline, selecting a D-T-S member to disable (for example, Y-T-D) in Application Manager's Dynamic Time Series Member Information dialog box causes Application Manager to crash. Server Crashes When Creating or Migrating a Large Number of .PAG Files: When the server is creating or migrating .PAG files, if the number of .PAG files exceeds 99 on Windows NT, or 82 on UNIX, the server crashes. With a Particular Database, Default Calculations on the Unchanged Database Behave Unexpectedly: A level-0 block is unnecessarily created after a default calculation on a database with all member formulas tagged as Dynamic Calc. Subsequently, repeated default calculations against the unchanged outline take an increasing amount of time. PROBLEMS FIXED IN PATCH 3 ======================================================================= Objects Download Fails if there is no /LOCALE Directory: With this patch, users of Objects and API programs no longer need a separate /LOCALE directory for the .NLS (National Language Support) files. Those files can be kept in the directory containing the application program. In a Particular Outline, a Non-Consolidating Member is Included in the Calculation: The data value associated with a Dynamic Calc, non-consolidating member, which is labeled with the tilde ( ~ ) operator, is incorrectly incorporated into a default calculation. Column Adjustment Occurs on Active Sheet Instead of the one Specified by EssVRetrieve Macro: This fix requires a client upgrade. The EssVRetrieve Spreadsheet Toolkit macro retrieves into the correct Excel sheet, but column widths are adjusted in the active sheet. In Japanese Application Manager, Non-Japanese Mixed Characters Appear in Tabs for Some Dialog Boxes: This fix requires a client upgrade. In the Japanese version of Application Manager, non-Japanese mixed characters appear in tabs for these dialog boxes: Database Information, Data File Attributes, Data Load Settings, Dimension Build Settings, and Dimension Attributes. Agent Crashes after Second Startup with Certain non-English Windows NT Regional Settings: With Certain non-English Windows NT Regional Settings, the Agent crashes after you start it a second time. Long PATH Variables are Truncated During Server Installations on Windows NT and Windows 95/98: Long PATH variables (>255 characters) are truncated when you install DB2 OLAP Server on Windows NT or Win9x. With this fix, the environment is updated only when necessary. If the updated value would be too long, no update occurs, and there is an informational message. EsbGetFilterList API Function Appends String to Normal Return Value: The API function EsbGetFilterList returns an unknown string at the end of the list of users. A Constant is Missing from Visual Basic API Header File: The ESB_OBJTYPE_NONE constant is not declared in the Visual Basic header file, Esb32.bas. Incorrect Retrieval in Spreadsheet Layout with Unknown Member: The first retrieval on a particular sheet with an unknown member puts incorrect data in other rows below the unknown member. The second retrieval is correct. Solaris Server Crashes when you View the Application Event Log in Application Manager: On a Solaris server, viewing the application event log by date in the Application Manager causes a core-dump crash. Updated Message File for IBM Relational Storage Manager: The message database file has been updated with two new messages. DB2 OLAP Server V1.1 Will Not Install on Solaris 2.7: With this patch, DB2 OLAP Server V1.1 is installable and supported on the Solaris 2.7 operating system on Sun SPARC or ULTRASPARC machines. Calc Script Editor Tab Settings Increased from DB2 OLAP Server V1.0.1: This fix requires a client upgrade. Tab settings in Calc Script Editor increased from version 1.0.1 to version 1.1, affecting on-screen script readability. This fix decreases the tab setting. Cell Note Disappears after Outline Restructure: Following an outline restructure, a cell note is no longer visible in the Linked Objects Browser of Application Manager, or Excel Spreadsheet Add-in. Application Not Successfully Deleted from DB2 OLAP Server Looks as if were Deleted in Application Manager: DB2 OLAP Server removes the App folder and the security file entry for an application after a DB2 function, EssSmAppDelete(), fails to delete the application. On Solaris Server, Drill-Down on Japanese Member in Spreadsheet Returns Incorrect Results: With a Solaris server, a particular spreadsheet query with aliases using Japanese characters returns incorrect results. Target with Mixed Source Partitions Takes Longer to Calculate after Migration to 1.1: A target database with twelve source partitions takes longer to calculate in version 1.1. When Users try to Add Members to a Group Beyond their Privileges, a Warning is not Displayed: A User with Create/Delete Users privilege can add members to a group having higher security privileges. The members seem to be added, only to disappear from the group's list of members. An error message appears only in the log file. This fix provides an error message that informs the user that members cannot be added to a group with higher privileges. Dimension Building Fails for Members with Certain Japanese Characters in the Alias: Dimension building with members using certain Japanese characters in the alias fails with one of these error messages: Incorrect Syntax For Member xxxxx (3305) Error adding alias (xxxxx) to member xxxxxx (3319) secured from process listing details: essbase.secure SQL Source Connectivity ----------------------- INTERSOLV ODBC Drivers: INTERSOLV ODBC drivers, Version 3.11 on Windows NT, AIX, and Solaris, and Version 3.0.2 on HP-UX, are provided with the DB2 OLAP Server V1.1 SQL Interface at fixpack 4 or later (Hyperion Essbase 5.0.2 Patch 3 or later). The following database configurations have been tested: Note: Only a limited number of driver configurations are tested. Contact the provider of the driver if you have problems with a configuration. Database Server (Client) NT 4.0 AIX 4.3 Solaris 2.6 HP-UX 10.20 ------------------------ ------ ------- ----------- ----------- DB2 5.0 (CAE 5.0) X X X - DBASE V X - - - Informix 7.22 (Client SDK 2.01) X - - - Microsoft SQL Server 6.5.201 X N/A N/A N/A Oracle 7.3.3 (SQL Net 2.3.3) unless specified. - X X X (2.3.4) Oracle 8.0.4 (SQL Net 8.0) X - X - Sybase 11.5 (Open Client 11.1.1) X X X - Non-INTERSOLV ODBC Drivers: The following non-INTERSOLV drivers are not provided with DB2 OLAP Server V1.1 SQL Interface. The following database configurations have been tested with fixpack 4 (Hyperion Soluctions Essbase 5.0.2 Patch 3). Note: Only a limited number of driver configurations are tested. Contact the provider of the driver if you have problems with a configuration. Database Server (Driver, Client) NT 4.0 AIX 4.3 Solaris 2.6 HP-UX 10.20 Access 97 (Microsoft Driver) X - - - DB2 5.0 (IBM Driver, CAE 5.0) - X - - DBASE V (Microsoft driver) X - - - Microsoft SQL Server 7 (Microsoft driver) X N/A N/A N/A Oracle 8.0.4 (Oracle driver, SQL Net 8.0) X - - - Enhanced Member Querying with New PIs ------------------------------------- Two new C Outline API functions, and one new structure, support enhanced member info queries. EssOtlQueryMembersEx returns extended information on specific members. EssOtlGetMemberField retrieves specific fields of a member. ESS_OTLQUERYERRORLIST_P stores a list of errors encountered during an extended member query. EssOtlQueryMembersEx Description EssOtlQueryMembersEx() queries the outline for specific members and member fields, and returns an array of member handles. The returned member handles can be used with other Outline API functions such as EssOtlGetMemberInfo(). (EssOtlGetMemberInfo() can retrieve any of the individual fields contained in ESS_MEMBERINFO_T and ESS_MBRINFO_T.) Syntax ESS_FUNC_M EssOtlQueryMembersEx (hOutline, pszFieldSelection, pszMemberSelection, pMaxCount, ppMemberArray, ppqryErrorList) ESS_HOUTLINE_T hOutline ESS_STR_T pszFieldSelection ESS_STR_T pszMemberSelection ESS_PULONG_T pMaxCount ESS_PPHMEMBER_T ppMemberArray ESS_PPOTLQUERYERRORLIST_T ppqryErrorList Parameters hOutline Product outline handle. This must have been returned from EssOtlOpenOutlineQuery(). pszFieldSelection The query string which defines the set of fields that will be returned for each member. The syntax of pszFieldSelection is shown below. pszMemberSelection The query string which defines the set of members to be returned. The syntax of this query string is the syntax for member selection; that is, the query string can be anything that you can use in a FIX() statement. pMaxCount Input: A pointer to the maximum number of member handles to be returned. Output: A pointer to the number of member handles returned. pphMemberArray Reference to a pointer to the first in an array of member handles returned. ppQueryErrorList Reference to a pointer to a structure containing the list of errors in the query. Return Value The return value is zero if the function was successful. Notes * EssOtlQueryMemberEx() takes an outline handle and returns an array of member handles specified by pszMemberSelection. * The caller should call EssOtlFreeMembers() when the returned pphMembers member array is no longer needed. * Each member handle element of the array can only be used in calls that are listed in EssOtlOpenOutlineQuery(). For example, a returned member handle cannot be used to call EssOtlGetSibling(). * The syntax of pszFieldSelection is the following: QueryString ==: #include #include #include #include #include #define AD_CHK_PRINTF_1(ARG1, ARG2) do { printf(ARG1, (ARG2) ? (ARG2) : "NullValue"); } while (0) void PrintResult(ESS_HCTX_T hCtx, ESS_HINST_T hInst, ESS_HOUTLINE_T hOutline, ESS_HMEMBER_T hMbr) { ESS_PMBRINFO_T pMbrInfo = NULL; ESS_STS_T sts; int size; ESS_STR_T pszFormula = NULL; ESS_STR_T pszLastFormula = NULL; ESS_STR_T pszCommentEx = NULL; ESS_STR_T pszAlias = NULL; ESS_STR_T pszAliasCombo = NULL; ESS_PMBRNAME_T pUDAList = NULL; ESS_USHORT_T iCount = 0; ESS_STR_T pszPrev = NULL; ESS_USHORT_T iIndex; ESS_ULONG_T* pMemNum; ESS_ULONG_T* pDimNum; ESS_STR_T pDimName = NULL; ESS_STR_T pAliasName = NULL; ESS_STR_T pNextName = NULL; ESS_STR_T pPrevName = NULL; ESS_STR_T pParentName = NULL; ESS_STR_T pChildName = NULL; ESS_BOOL_T* pCurrConv = NULL; ESS_ULONG_T* pStatus = NULL; sts = EssOtlGetMemberInfo(hOutline, hMbr, &pMbrInfo); if (sts != 0) goto Error; size = sizeof(ESS_MBRINFO_T); printf("MbrInfo\n"); AD_CHK_PRINTF_1(" szMember --------------->(%s)\n", pMbrInfo->szMember); printf(" usLevel --------------->(%hd)\n", pMbrInfo->usLevel); printf(" usGen ----------------->(%hd)\n", pMbrInfo->usGen); printf(" usConsolidation ------->(%hd)\n", pMbrInfo->usConsolidation); printf(" fTwoPass -------------->(%hd)\n", pMbrInfo->fTwoPass); printf(" fExpense -------------->(%hd)\n", pMbrInfo->fExpense); printf(" usConversion ----------->(%hd)\n", pMbrInfo->usConversion); AD_CHK_PRINTF_1(" szCurMember ------------>(%s)\n", pMbrInfo->szCurMember); printf(" usTimeBalance ---------->(%hd)\n", pMbrInfo->usTimeBalance); printf(" usSkip ----------------->(%hd)\n", pMbrInfo->usSkip); printf(" usShare ---------------->(%hd)\n", pMbrInfo->usShare); printf(" usStorage -------------->(%hd)\n", pMbrInfo->usStorage); printf(" usCategory ------------->(%hd)\n", pMbrInfo->usCategory); printf(" usStorageCategory ------>(%hd)\n", pMbrInfo->usStorageCategory); AD_CHK_PRINTF_1(" szComment -------------->(%s)\n", pMbrInfo->szComment); printf(" ulChildCount ----------->(%ld)\n", pMbrInfo->ulChildCount); sts = EssOtlGetMemberFormula(hOutline, hMbr, &pszFormula); if (sts) printf("sts=%d ", sts); AD_CHK_PRINTF_1("szFormula ------------------>(%s)\n", pszFormula); sts = EssOtlGetMemberLastFormula(hOutline, hMbr, &pszLastFormula); if (sts) printf("sts=%d ", sts); AD_CHK_PRINTF_1("szLastFormula -------------->(%s)\n", pszLastFormula); sts = EssOtlGetMemberCommentEx(hOutline, hMbr, &pszCommentEx); if (sts) printf("sts=%d ", sts); AD_CHK_PRINTF_1("szCommentEx ---------------->(%s)\n", pszCommentEx); sts = EssOtlGetMemberAlias(hOutline, hMbr, ESS_NULL, &pszAlias); if (sts) printf("sts=%d ", sts); AD_CHK_PRINTF_1("szAlias (Default)----------->(%s)\n", pszAlias); sts = EssOtlGetNextAliasCombination(hOutline, hMbr, ESS_NULL, "\0", &pszAliasCombo); if (sts) printf("sts=%d ", sts); printf("szAliasCombo ::\n" ); pszPrev = pszAliasCombo; while (sts && pszAliasCombo) { AD_CHK_PRINTF_1("\t(%s)\n", pszAliasCombo); sts = EssOtlGetNextAliasCombination(hOutline, hMbr, ESS_NULL, pszPrev, &pszAliasCombo); EssFree(hInst, pszPrev); pszPrev = pszAliasCombo; } sts = EssOtlGetUserAttributes(hOutline, hMbr, &iCount, &pUDAList); if (sts) printf("sts=%d ", sts); printf("User Defined Attributes ::\n"); for(iIndex = 0; iIndex < iCount; iIndex++) AD_CHK_PRINTF_1("\t(%s)\n", pUDAList[iIndex]); sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_NUMBER, (ESS_PPVOID_T) &pMemNum); if (sts) { printf("sts=%d ", sts); } else { printf("Member Number ------------------>(%ld)\n", *pMemNum); EssFree(hInst, pMemNum); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_DIMNUMBER, (ESS_PPVOID_T) &pDimNum); if (sts) { printf("sts=%d ", sts); } else { printf("Dimension Number ---------------->(%ld)\n", *pDimNum); EssFree(hInst, pDimNum); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_DIMNAME, (ESS_PPVOID_T) &pDimName); if (sts) { printf("sts=%d ", sts); } else { AD_CHK_PRINTF_1("Dimension Name ------------------>(%s)\n", pDimName); EssFree(hInst, pDimName); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_ALIASNAME, (ESS_PPVOID_T) &pAliasName); if (sts) { printf("sts=%d ", sts); } else { AD_CHK_PRINTF_1("Alias Name ------------------>(%s)\n", pAliasName); EssFree(hInst, pAliasName); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_NEXTNAME, (ESS_PPVOID_T) &pNextName); if (sts) { printf("sts=%d ", sts); } else { AD_CHK_PRINTF_1("Next Mbr Name ------------------>(%s)\n", pNextName); EssFree(hInst, pNextName); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_PREVNAME, (ESS_PPVOID_T) &pPrevName); if (sts) { printf("sts=%d ", sts); } else { AD_CHK_PRINTF_1("Prev Mbr Name ------------------>(%s)\n", pPrevName); EssFree(hInst, pPrevName); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_PARENTNAME, (ESS_PPVOID_T) &pParentName); if (sts) { printf("sts=%d ", sts); } else { AD_CHK_PRINTF_1("Parent MbrName ------------------>(%s)\n", pParentName); EssFree(hInst, pParentName); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_CHILDNAME, (ESS_PPVOID_T) &pChildName); if (sts) { printf("sts=%d ", sts); } else { AD_CHK_PRINTF_1("Child Mbr Name ------------------>(%s)\n", pChildName); EssFree(hInst, pChildName); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_CURRENCYCONVDB, (ESS_PPVOID_T) &pCurrConv); if (sts) { printf("sts=%d ", sts); printf("Curr Conv Type ------------------>\n"); } else { AD_CHK_PRINTF_1("Curr Conv Type ------------------>(%ld)\n", *pCurrConv); EssFree(hInst, pCurrConv); } sts = EssOtlGetMemberField(hOutline, hMbr, ESS_OTLQRYMBR_STATUS, (ESS_PPVOID_T) &pStatus); if (sts) { printf("sts=%d ", sts); printf("Status ------------------>\n"); } else { printf("Status ------------------>(%hd)\n", *pStatus); EssFree(hInst, pStatus); } EssFree(hInst, pMbrInfo); EssFree(hInst, pszFormula); EssFree(hInst, pszLastFormula); EssFree(hInst, pszCommentEx); EssFree(hInst, pszAlias); EssFree(hInst, pszAliasCombo); return; Error: printf("******************* Error *************************"); } int TestCode_EssOtlQueryMembersEx(ESS_HCTX_T hCtx, ESS_HINST_T hInst) { ESS_STS_T sts = ESS_STS_NOERR; ESS_HOUTLINE_T hOutline; ESS_OBJDEF_T Object; ESS_HMEMBER_T hMember = 0; ESS_PHMEMBER_T phMemberArray = ESS_NULL; ESS_ULONG_T i; unsigned long MaxCount = -1; ESS_STR_T member_fields; ESS_STR_T member_selection; /* query string to get level numbers of all markets members */ member_fields = "