Certainly if one is looking to save a cycle or two then
if a(i) >= 0 then
sum = sum + a(i);
should be
if a(i) > 0 then
sum = sum + a(i);
because adding a(i) to sum when a(i) == 0 is a waste of a cycle or two.
Charles
-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf
Of Robert Prins
Sent: Thursday, August 3, 2017 12:11 PM
To: [email protected]
Subject: Someone just too smart for his or her own good?
Just came across the following, and please don't come back with pedantic
remarks about undeclared variables, the code is just to show what's there:
dcl sum fixed (7) init (-0.1);
for i = 1 to whatever;
if a(i) >= 0 then
sum = sum + a(i);
end;
if substr(unspec(sum), 25, 8) ^= '0d'bx then
put data(sum);
In other words if all a(i) are negative, nothing is printed. A comment in the
code suggests that this is faster code, on modern OoO z/OS systems, than the
more logical:
dcl sum fixed (7) init (-1);
for i = 1 to whatever;
if a(i) >= 0 then
if sum ^= -1 then
sum = sum + a(i);
else
sum = a(i);
end;
It probably is if the value of whatever is in the order of 42 gazillion, but
any other thoughts about this?
Robert
--
Robert AH Prins
[email protected]
Some programming @ <https://prino.neocities.org/zOS/zOS%20Tools.html>
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to
[email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN