× 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.



Then how would using an elseif change any outcome?  I thought IF, ELSE, 
IF, ELSE, ENDIF is exactly the same as IF, ELSEIF, ELSE, ENDIF.
Am I wrong?

Ron Power
Programmer
Information Services
City Of St. John's, NL
P.O. Box 908
St. John's, NL
A1C 5M2
709-576-8132
rpower@xxxxxxxxxx
http://www.stjohns.ca/
___________________________________________________________________________
Success is going from failure to failure without a loss of enthusiasm. - 
Sir Winston Churchill




"Joe Pluta" <joepluta@xxxxxxxxxxxxxxxxx> 
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
2006/05/25 04:23 PM
Please respond to
RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx>


To
"'RPG programming on the AS400 / iSeries'" <rpg400-l@xxxxxxxxxxxx>
cc

Subject
RE: Having both if/else executing at the same time






Actually, the original code simply selected among three mutually exclusive
conditions.  Using an ELSEIF doesn't change the outcome at all.

IF CondA;
  DoA;
ELSE;
  IF CondB;
    DoB;
  ELSE;
    DoC;
  ENDIF;
ENDIF;

Is functionally equivalent to:

IF CondA;
  DoA;
ELSEIF CondB;
  DoB;
ELSE;
  DoC;
ENDIF;

The ELSEIF just removes the second "endif" (which you accidentally left in
your post, Bob, LOL!).  This is also functionally equivalent to:

SELECT;
  WHEN CondA;
    DoA;
  WHEN CondB;
    DoB;
  OTHER;
    DoC;
ENDSL;

Nowadays I tend towards the third form if there are more than two mutually
exclusive conditions.

It should be noted that the three conditions being selected among are
(CondA), ((NOT CondA) and (CondB)), and finally ((NOT CondA) and (NOT
CondB)).  That is, even if both CondA and CondB are true, only the first
branch of the code will be executed.

Joe


> From: Bob Cozzi
> 
> ELSE and IF are two statements. In your code the only time the second IF
> will be
> performed is when the first IF fails. Why? Because the first ELSE is 
only
> going
> to be run if the first IF fails. Otherwise it'll jump to the ENDIF
> statements.
> I think what you really mean to have is ELSEIF not "ELSE" and "IF".
> Replace the ELSE and IF with ELSEIF, and then take a look as this page:
> 
> www.rpgiv.com/blueribbon.html
> 
>   if %len(%trim(APIErrMsg)) > 0;
>      W#ERFL = *ON;
>      W#MSDT = 'Error #' + APIErrMsg + ' receiving data from ' +
>               'data queue.  Detail:  ' + APIErrDta;
>    elseif %trim(itmInfo) = '';
>       W#ERFL = *ON;
>       W#MSDT = 'Invalid data received from data queue: ' +
>             itmInfo ;
>    else;
>        uMATNO = jMATNO;
>        uSIZE = jSIZE;
>        uTEMPER = jTEMPER;
>        uINSUL = jINSUL;
>        uTENSIL = jTENSIL;
>    endif;
>    endif;



As an Amazon Associate we earn from qualifying purchases.

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-2024 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].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.