I hope you don't mind if I comment once again;
my original coding was:
IF TVOLL (IND1) NOT = HIGH-VALUE
AND SMOD (IND1) = 'B' OR 'R'
and as I learned now from your helpful posts,
this is expanded to
IF TVOLL (IND1) NOT = HIGH-VALUE
AND SMOD (IND1) = 'B' OR SMOD (IND1) = 'R'
(which would have alarmed me, if I had seen it in this variant, BTW)
and then, because of operator precedence, evaluated as
IF (TVOLL (IND1) NOT = HIGH-VALUE
AND SMOD (IND1) = 'B')
OR SMOD (IND1) = 'R'
so that in my case (SMOD ... being 'R') the condition evaluated to true,
which was not what I had expected.
This is a little bit counter intuitive IMHO, because the abbreviation
'B' OR 'R' suggests that the list of values both rely to the right
condition (only)
and so I thought the evaluation would be
IF TVOLL (IND1) NOT = HIGH-VALUE
AND (SMOD (IND1) = 'B' OR 'R')
I expected somehow an implicit paranthese because of the abbreviation ...
What I would take as a conclusion (for me) from this experience:
it is best to use parantheses, especially if there is a combination
of AND and OR ... and when using abbreviations.
Thanks again, kind regards
have a nice weekend
Bernd
Am 05.06.2020 um 20:48 schrieb Bob Bridges:
Seems to me that ~is~ operator precedence: We evaluate AND before OR, just as
we evaluate * before +. But that's closely related to the distributive rule,
right?
P and Q or R
R or P and Q
...both evaluate the same way, to "(P and Q) or R". The distributive property
says that
P and (Q or R)
...evaluates to
(P and Q) or (P and R)
I'm just as rusty in COBOL as Mr Oppolzer, so I didn't know you could say
IF VAR = 'B' OR 'R'
But if you can, it must mean "IF VAR = 'B' OR VAR = 'R'".
---
Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313
/* No one would talk much in society if he knew how often he misunderstands
others. -Goethe */
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN