On 2025-07-07 21:33, Thomas David Rivers wrote:
I would love to see these "standard" tests... do you have a pointer to
some?
In my experience, even neglecting the new things IBM has invented over
the decades,
there are still many corners where IBM doesn't match the PL/I
standard... I've been
walking through trying to understand the standard for several years.
One good example is where IBM doesn't match the standard, it doesn't
always
evaluate the operand of the LENGTH builtin (which could invoke a
function) if it can
compute the result at compile-time. So, even though the expression
might have a
side-effect, it is not invoked.
If the string is fixed length, PL/I doesn't need to evaluate anything.
If the argument to LENGTH is an expression, the expression might need to
be evaluated.
For example, LENGTH (A || B) would not require the evaluation of the
expression
when both A and B are of fixed length. The length would be available at
compile time.
IBM also has many extensions - you can use a "restricted expression"
where a constant
is required in the standard; but IBM doesn't strictly define what this
is.
IBM also evaluates declarations in an order to try and allow some
forward constant declarations
to be used in a previous declaration; but doesn't define what that
order might be - so some forward
declarations work, and some others don't.
Such as?
I suppose my post here devolves into "IBM has enhanced things (for
their customers) without
strictly defining what those enhancements might be in relation to the
standard, and with only
a loose description of those enhancements."
I'd love to see a set of "standard" tests though!
- Dave Rivers -
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN