No disrespect Jonathan - but that's one of the ugliest pieces of COBOL I've seen in a long time!


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Jan 26, 2019, at 9:09 PM, Jonathan Ball <jonball52@xxxxxxxxx> wrote:

I agree about the aesthetics.

I'd point out that COBOL has the same "redundancy" with its IF-ELSE IF-ELSE structure and its EVALUATE verb. EVALUATE is the functional equivalent of SELECT.

EVALUATE A + B ALSO TRUE ALSO X = Z
WHEN 3 ALSO D = E ALSO TRUE
PERFORM PARA-1
WHEN 4 ALSO G = H ALSO FALSE
PERFORM PARA-2
WHEN 5 ALSO J > K ALSO ANY
PERFORM PARA-3
WHEN OTHER
PERFORM PARA-4
END-EVALUATE

On 1/26/2019 10:25 AM, Roger Harman wrote:
Aesthetically, I prefer the select. Visually, it's just more appealing to me and reads more clearly.

Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power





-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxxxxxxxx] On Behalf Of Craig Richards
Sent: Saturday, January 26, 2019 10:00 AM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: select vs. if-elseif

Interesting that a few folks apply SELECT or IF / ELSEIF for different
situations.

Personally I pretty much see them as identical and confess I probably use
them fairly randomly.

One technique I have used a fair bit is to utilise sub-procedures that
return booleans so that I can perform more complex checks but still return
FALSE and drop down to the next boolean test in the SELECT or IF / ELSEIF
structure.




On Sat, 26 Jan 2019 at 16:30, Joe Pluta <joepluta@xxxxxxxxxxxxxxxxx> wrote:

I have a similar approach to Birgitta. If in my mind I am thinking "this
is a condition where a small number of variables have specific states"
then I use a select. If it's a more complex set of business rules such
as "if it's a non-taxable customer, do A, else if we're in a special tax
facility do B, else if the item has special considerations do C" then I
go with an If/Elseif stack.

On 1/26/2019 5:25 AM, Birgitta Hauser wrote:
Even they are redundancy I use SELECT and IF/ELSEUF them "differently".

If I check different entries within the same variable(s), I use SELECT.
For
examples

Select;
When FLDA = 'A';
When FLDB = 'B;
...
EndSL;

Or

Select
When FldX = 'A' and FldY = 'B';
When FldX = 'X' and FldY <> 'B'
When FldX <> 'A' and FldX <> 'X' and FldY = 'C'
...
EndSL

If I have to check different conditions I use IF / ELSEIF. For examples:
If FLDA = 'X' and FLDB = 'Y';
ElseIF FLDC = 1;
...
Else;
EndIf

Or
(Param3 and Param2 are different fields)
If %Parms >= %ParmNum(Param3) and Param3 > '';
ElseIf %Parms >= %ParmNum(Param2) and Param2 > *Zeros;
...
Else;
EndIf;

... but these are only my private rules
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com


--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com


This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].