Yep. I even had a colleague of mine look at the code while we stepped
through it with the debugger. It skipped the statements to be performed
regardless of the program was running in a debugger or from normal call
statement. 

One difference between your test and my code is that WS-ORDER-DOES-NOT-EXIST
is an 88 level storage area:
01 WS-ORDER-EXISTS-FLAG                 PIC S9(01).
        88 WS-ORDER-DOES-NOT-EXIST      VALUE 0.
        88 WS-ORDER-EXISTS              VALUE 1.
Could this make a difference? The value of WS-ORDER-EXISTS-FLAG at the time
was 0, so WS-ORDER-DOES-NOT-EXIST was true.

We're using OPM COBOL. 

And we were just as perplexed as you... :)

Kelly


-----Original Message-----
From: cobol400-l-bounces@xxxxxxxxxxxx
[mailto:cobol400-l-bounces@xxxxxxxxxxxx]On Behalf Of Finucci Domenico
Sent: Wednesday, March 03, 2004 10:14 AM
To: COBOL Programming on the iSeries/AS400
Subject: R: [COBOL400-L] Question about evaluation of a conditional
statement.


Are you shure ? 
I tried: 
  01 a pic x value "S".   
  01 b pic x value "S".   
 ** ----------------------
  PROCEDURE DIVISION.     
      if (a equal "S"     
      and b equal "S" )   
          display "( OK"  
      end-if              

      if  a equal "S"     
      and b equal "S"     
          display "  OK"  
      end-if              
      GOBACK.             

And it behaves normally (both ILE and CBL, V5R1M0) 

Sincerely
Domenico Finucci

-----Messaggio originale-----
Da: Kelly Cookson [mailto:KCookson@xxxxxxxxxxxx]
Inviato: mercoledì 3 marzo 2004 17.01
A: COBOL400-L@xxxxxxxxxxxx
Oggetto: [COBOL400-L] Question about evaluation of a conditional
statement.


While reengineering a program, I created the following conditional
statement:

IF (WS-RISK-CODE = "FX" AND  
   WS-ORDER-DOES-NOT-EXIST)
        <perform some statements>
END-IF.

The conditional statement was evaluated false during the program run even
though WS-RISK-CODE equalled "FX" and WS-ORDER-DOES-NOT-EXIST was true. None
of the statements to be performed were performed.

I then removed the parentheses to result in the following:

IF WS-RISK-CODE = "FX" AND  
   WS-ORDER-DOES-NOT-EXIST
        <perform some statements>
END-IF.

This worked.

I'm not sure I understand how the parentheses caused the problem. I assumed
the order of evaluation within the parentheses would be the relational
operator first and then the logical operator. 

Can someone explain it to me?

Thanks,
Kelly
     
_______________________________________________
This is the COBOL Programming on the iSeries/AS400 (COBOL400-L) mailing list
To post a message email: COBOL400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/cobol400-l
or email: COBOL400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/cobol400-l.




_______________________________________________
This is the COBOL Programming on the iSeries/AS400 (COBOL400-L) mailing list
To post a message email: COBOL400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/cobol400-l
or email: COBOL400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/cobol400-l.


As an Amazon Associate we earn from qualifying purchases.

This thread ...


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

This mailing list archive is Copyright 1997-2022 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.