CX_DATA_CUBE::DataCubeCore
Description:
Like DataCube, only the elements of the vector of dimensions are treated differently: for CX_OVERWRITING_REF the original object is used for dimension comparison.
Example:
The following two spellings express the same thing:
[ a b ] FALSE monitor Call(DataCubeCore) // <=> [ a Core b Core] FALSE monitor Call(DataCube)
Programming note:
The methods DataCube and DataCubeCore should always be called by the object - i.e. the dimension - which (presumably) has the smaller number of monitors. From a performance point of view, the small collection must be searched in this way.
Code example:
periodBalance Copy(opening.illTime) Dup if { illTimeBalance Swap + illTimeBalance Put } else Drop periodBalance Copy(current.illTime) Dup if { illTimeBalance Swap + illTimeBalance Put } else Drop // Get next balance flextimePeriod Get(term.StartOfPeriod()) Dup 1 Swap Call(AddMonth) -> nextStartDate // Check, if year remains the same [ worktimeAccount nextStartDate Call(Year) ] TRUE worktimeAccount Call(DataCubeCore) Dup yearBalance @! -> isNextYearBalance -> yearBalance [ yearBalance nextStartDate Call(Month) ] TRUE yearBalance Call(DataCubeCore) -> nextBalance
Stack | Position | Object type | Brief description |
---|---|---|---|
Stack(In) | Top | CX_DATA_CUBE | Monitor |
Top 1 | INTEGER | Flag | |
top 2 | VECTOR | Vector of dimensions | |
Stack(Out) | Top | CX_MONITOR | Result |