×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
On 02-Nov-2015 17:01 -0600, Jon Paris wrote:
On Nov 2, 2015, at 4:58 PM, CRPence wrote:
Was not that overflow error prevented with the Truncate Numeric
(TRUNCNBR) specification of *YES, so as to "Ignore numeric overflow
and move the truncated value to the result field" [to mimic] just
like what happened in the older RPG? And that parameter
specification defaulted to *YES, so that problem would not become
an issue for that calculation with the newer compiler, unless
explicitly changed was the default or the explicit specification to
the value of *NO, asking to cause the overflow error to be exposed
at run-time? I was too lazy to test; but interested enough to
overcome my laziness to look up the parameter name, the parameter
help text, and the default :-)
No Chuck - in fact the exact opposite.
The point of TRUNCNBR is to make RPG III style op-codes such as
MULT/ADD/etc. behave the _same_way_ as their more intelligent RPG IV
operations i.e. to fail in the event of an overflow condition.
There is no Truncate Numeric feature on the OPM compiler command that
I can find. I can find that parameter only on the ILE compiler
commands. Perhaps thinking instead, of the Ignore Decimal Data Errors
(IGNDECERR) parameter?
Just to confirm:
I compiled the following source having SRCTYPE(RPG), with the
14=Compile the command CRTRPGPGM effected a compile with defaults:
FQSQPTABLIP F 4 DISK
IQSQPTABLXX
C Z-ADD110215 MMDDYY 60
C MMDDYY MULT 10000.01 YYMMDD 60
C Z-ADD151102 YMD6 60
C YYMMDD IFEQ YMD6
C 'ALL GOOD'DSPLY
C ENDIF
The effect for CALL of the program was displaying the text "ALL GOOD".
I then converted the above source using CVTRPGSRC, which effected the
following source [member having SRCTYPE(RPGLE)], after which with the
14=Compile the command CRTBNDRPG effected a compile with defaults:
FQSQPTABL IP F 4 DISK
IQSQPTABL XX
C Z-ADD 110215 MMDDYY 6 0
C MMDDYY MULT 10000.01 YYMMDD 6 0
C Z-ADD 151102 YMD6 6 0
C YYMMDD IFEQ YMD6
C 'ALL GOOD' DSPLY
C ENDIF
Just like the pre-converted program, the effect for CALL of the new
program was displaying the text "ALL GOOD". There was no error.
To force the msg RNQ0103 to transpire instead, during run-time in
response to the msg MCH1210, I had to explicitly specify the value *NO
for the Truncate Numeric (TRUNCNBR) on the compile request.
Seems the default behavior for the new compiler was to honor [to
mimic] the old\bad way of ignoring overflow for the simple MULT
operation [while also moving the truncated result to the result field].
That seems only natural, to best protect someone who might be using
the CVTRPGSRC and then just compiling their new source to replace the
old; i.e. their expectation is that the program created [from the
post-cvt src] with the new compiler should work the same as the program
created [from the pre-cvt src] with the old compiler. From the help
text is also the "Note: The TRUNCNBR option does not apply to
calculations performed within expressions. (Expressions are found in the
Extended-Factor 2 field.) If overflow occurs for these calculations, an
error will always occur."; but that would not apply to a
merely-converted source, because the older RPG did not have that
capability, and CVTRPGSRC will not generate any code changes, for
example to make use of an EVAL.
As an Amazon Associate we earn from qualifying purchases.