Allow for values to be defined at the Application and Model level as well as some values that are always provided by the software. When Application variables are evaluated at run time there is an inheritance hierarchy to allow for things like defining a default value at the Application level and overriding that value for specific Models where appropriate. This also allows for an application to override any System level variable where appropriate.

Application variables defined at various places within the application with an override sequence when the same variable is defined in multiple places. Application variables can also be used to reference other application variables. Values of application variables are evaluated within each other to ultimately return a string value that can be used for whatever is appropriate when the variable is used. Places to define:

  • System

  • Application

  • Model

    {{@applicationvariablename}}

  • Return the value of the variable

    {{@applicationvariablename(@parameter1,@parameter2)}}

  • Return the value of the variable, with all parameters values dynamically substituted for the application variable names within the value defined for the variable.

  • If a parameter does not exist within the value defined for the variable, it will assume a value of an empty string.


1. Usage

Application variables can be used in Report Headings, Drill Report, and List specifications. Each variable will be evaluated at the time a report is refreshed and the value will be dynamically used to produce the report.


2. Dynamic List (new)

A report node of type List can have a list of members entered as a dynamic range of members from one member to another member by specifying two dimension names within square brackets separated by a colon. The beginning member or ending member of a dynamic list can be excluded by adding a ~ to the beginning of the list member.

  • [member1]:[member2] – will dynamically produce a list of members starting with member1 and ending with member2. By default member1 and member2 are included in the list of members.

  • [member1]:~[member2] – all members from member1 to member2, but not including member2

  • ~[member1]:[member2] – all members from member1 to member2, but not including member1

  • ~[member1]:~[member2] – all members from member1 to member2, but not including member1 or member2.

Dynamic List members can also include Application Variables in the definition. The Application Variables are evaluated and then the values of the Application Variables make up the List definition.

3. System Variables (new)

  • @CLSERVERURL– the url entered on the logon screen to access the server.

  • @CLSERVER – name of the server as determined from the logon url

  • @CLHTTPPROTOCOL – http or https as determined from the logon url

  • @PCFULLCV – Fully qualified CV with comma separated entry for each dimension as follows
    [Dimension].[Hierarchy]=[Dimension].[Hierarchy].[Member],…

  • @PCDIMCV(Dimension) – Fully qualified CV setting for one dimension

  • @CLCURRENTMEMBER(Dimension)

  • @CLPROPERTY(Member,Property)

  • @CLTIMEOFFSET(Member,TimeOffset,Levelname)

4. Application Variable Examples (new)

This should allow the following issues to be addressed:

  • Define a parameter to set the current period for a model – @CurrentPeriod = “March 2010”

  • Report that shows periods beginning of the current year to current period – 

    {{@CLTimeOffset({{@CurrentPeriod}},”BEG”,”Year”)}}:[{{@CurrentPeriod}}]

  • Report that shows periods from the current period to the end of the year, excluding the current period – 

    [{{@CurrentPeriod}}]:{{@CLTimeOffset({{@CurrentPeriod}},”END”,”Year”)}}

  • Report that shows periods from a period specified by a dimension member property to the end of the year – 

    [{{@CLProperty(Dimension,Property)}}]:{{@CLTimeOffset( {{@CLProperty(Dimension,Property)}},”END”,”Year”)}}

  • Define a parameter for the url to call a standard Web Drill Report - 

    @DrillReport(@Prm1) = “{{@CLSERVERURL}}/ReportServer?@Prm1

  • DrillReport definition within a report to call report named “Report1” -

    {{@DrillReport(Report1)}}