Skip to content

calc/fix-balance

Severity error by default. It runs on calc-script bodies (.csc) in Rules, Templates, and Scripts, and needs nothing but the file you have open.

Every FIX( in the body is paired with an ENDFIX, counting nesting. An opener left unclosed is flagged at the FIX( itself; a closer with nothing above it is flagged at the ENDFIX. Keywords in comments or inside quoted strings are ignored, and matching is case-insensitive, so fix( and endfix pair normally. FIXPARALLEL and ENDFIXPARALLEL are counted by neither side, so a parallel block never produces a false imbalance here.

An unbalanced FIX is not a style opinion. Essbase refuses to run the script, and Calculation Manager reports a parse failure that names the end of the body rather than the opener you forgot to close. In a long Rule with several nested slices, that is a slow thing to find by reading.

FIX( "Plan", "FY Total" )
FIX( @RELATIVE("Entity", 0) )
"Net Income" = "Revenue" - "Total Expenses";
ENDFIX

The inner slice is closed, the outer one is not, so the finding lands on line 1:

This `FIX(` has no matching `ENDFIX`.

The reverse case, an ENDFIX with no opener above it, reads:

This `ENDFIX` has no matching `FIX(`.

Corrected:

FIX( "Plan", "FY Total" )
FIX( @RELATIVE("Entity", 0) )
"Net Income" = "Revenue" - "Total Expenses";
ENDFIX
ENDFIX

Change its severity or turn it off in the Validation Rules panel, or exempt one artifact with an Exception. A Template or Script that deliberately opens a slice its parent Rule closes is the usual reason to reach for an Exception rather than a severity change.