Dear David,
When you optimize a module, the system streamlines the module to make the
runtime performance as fast as possible. though, optimization can have
adverse side effects when you are debugging the program or service program.
Optimization may rearrange or eliminate some statements altogether.
Consequently, field values presented by the debugger, as well as breakpoints
and step locations, may be inaccurate. Optimization will also affect the
accuracy of the DUMP operation and error handling routines (e.g., Monitor
groups, *PSSR and INFSR subroutines).
OPTIMIZE(*FULL) generates the most efficient code -- and the compile process
also takes longer. The program should run faster than with either of the
other two options. The debugger will let you see (but not change) field
values; but the debugger may not show you the correct current field values.
check this link
http://www.itjungle.com/guruo/guruo-11-07-2001.html