This post will tell you how to get HFM to spot misspelled variables in rules files automatically. For example. if you write run a rule like this:

Sub Calculate
    AccountList = HS.Account.List("","AList"For Each AccountMember In AccountList 
        HS.Clear "A#" & AccountMem 
    Next 
End Sub

it will clear all accounts! This is because AccountMember has been misspelled as AccountMem and HFM therefore creates a new empty variable, AccountMem. Errors like this can be very hard to spot.

However, there is a simple solution to this problem. Put Option Explicit at the start of your rules file and declare all variables with Dim. For example:

Option Explicit 
Sub Calculate 
    Dim AccountList, AccountMember
    AccountList = HS.Account.List("","AList"For Each AccountMember In AccountList 
        HS.Clear "A#" & AccountMem 
    Next 
End Sub

When this rule is calculated in a grid or form, a message like EPMHFM-102: Error executing VBScript %0 will be displayed and a message like Error executing VBScript Microsoft VBScript runtime error, Line 3:Variable is undefined: ‘AccountList’ will be written to System Messages.

Where is it best to declare variables? 

In programming languages such as Java, variables can be declared when they are used like this:

int result = 1

This is not possible in VB rules. I find it easiest to declare variables at the start of procedures:

Sub BlockByCustom1 
    Dim AccountList, AccountMember 
    Dim Custom1List, Custom1Member
    :
End Sub 

As I am a bit of a neat freak, I put them in alphabetical order!

What about Calc Manager? 

As far as I am aware it is not possible to use Option Explicit with Calc Manager. However, if anyone knows better I would be very interested know how.

How to get Oracle Financial Management (HFM) to spot misspelled variables for you