Each symbol in SKILL can have a value (used as a variable), a function definition and a property list.
One idea that may help is to make sure that you have a procedure defined for a particular simulation or type, and then use the property list slot of the same symbol (i.e. the function name) to store data. The data is global but looks as if it 'belongs' to the procedure, here is a very simple example:
myproc.xval = 50
myproc.yval = 123
The property list value could be a table structure, a list etc. to allow for storage to be grouped under one roof, but it is still global since the property list is on the symbol for the function name, which is by virtue, global (for SKILL anyway, SKILL++ would allow private functions). SKILL Lint does not "see" the property list values as global. You can also use the SKILL access functions for accessing this, in this case you might use:
=> (xval yval)
This would seem a simple attempt to solve the problem, but does not really address the issues of global vs. local vs. private (e.g. SKILL++) . You can use SKILL++ non-interactively, one method is to ensure that the filename ends in the suffix .ils and it will be loaded with SKILL++ semantics, or you can look at the toplevel() function. I have not tried to use SKILL++ in conjunction with OCEAN, but I do not see any reason why it would not work.
I hope this helps a little.