SSRANGE is a compile option used to check subscript and index ranges for
internal tables. Here is some information from a manual I found on
Google.
SSRANGE
SSRANGE option syntax
.-NOSSRANGE-.
-----------------------------------------------------------><
'-SSRANGE---'
Default is: NOSSRANGE
Abbreviations are: SSR|NOSSR
Use SSRANGE to generate code that checks if subscripts (including ALL
subscripts) or indexes try to reference an area outside the region of
the table. Each subscript or index is not individually checked for
validity; rather, the effective address is checked to ensure that it
does not cause a reference outside the region of the table.
Variable-length items will also be checked to ensure that the reference
is within their maximum defined length.
Reference modification expressions will be checked to ensure that:
The reference modification starting position is greater than or equal to
1.
The reference modification starting position is not greater than the
current length of the subject data item.
The reference modification length value (if specified) is greater than
or equal to 1.
The reference modification starting position and length value (if
specified) do not reference an area beyond the end of the subject data
item.
If SSRANGE is in effect at compile time, the range-checking code is
generated. You can inhibit range checking by specifying CHECK(OFF) as a
run-time option. This leaves range-checking code dormant in the object
code. Optionally, the range-checking code can be used to aid in
resolving any unexpected errors without recompilation.
If an out-of-range condition is detected, an error message is displayed
and the program is terminated.
Remember: You will get range checking only if you compile your program
with the SSRANGE option and run it with the CHECK(ON) run-time option.
I am assuming that the program you are running has internal tables and
that is where your problem is coming from. Since it works some times in
production and not others it is probably related to the data.
Kirk out.