PreviousNextIndex

IF...THEN...ELSE statement

Makes the execution of a statement or block of statements conditional. If the value of the expression following the IF statement is TRUE, the AVM processes the statements following the THEN statement. Otherwise, the AVM processes the statements following the ELSE statement.

Syntax

IF expression THEN { block | statement } 
  [ ELSE { block | statement } ] 

expression
THEN
block
statement
ELSE
Example

The r-ifelss.p procedure creates a report in a file that lists Customers whose Orders have been shipped, but who have not paid for those Orders:

r-ifelss.p
DEFINE VARIABLE ans AS LOGICAL NO-UNDO. 
DEFINE STREAM due. 
OUTPUT STREAM due TO ovrdue.lst. 
DISPLAY STREAM due 
  "Orders shipped but still unpaid as of" TODAY SKIP(2) 
  WITH NO-BOX NO-LABELS CENTERED FRAME hdr PAGE-TOP. 
FOR EACH Order WITH FRAME oinfo: 
  FIND Customer OF Order NO-LOCK. 
  DISPLAY Order.OrderNum Customer.Name Order.OrderDate Order.PromiseDate 
    Order.ShipDate. 
  IF Order.ShipDate = ? THEN DO: 
    IF Order.PromiseDate = ? THEN DO: 
      MESSAGE "Please update the promise date.". 
      REPEAT WHILE promise-date = ?: 
        UPDATE Order.PromiseDate WITH FRAME oinfo. 
      END. 
    END. 
    ans = FALSE. 
    MESSAGE "Has this order been shipped?" UPDATE ans. 
    IF ans THEN  
    REPEAT WHILE Order.ShipDate = ?: 
      UPDATE Order.ShipDate WITH FRAME oinfo. 
    END. 
  END. 
  ELSE DO: 
    ans = TRUE. 
    MESSAGE "Has this order been paid?" UPDATE ans. 
    IF NOT ans THEN DO: 
      DISPLAY STREAM due Order.OrderNum TO 14 Customer.Name AT 18 
        Order.OrderDate AT 42 Order.ShipDate AT 54 
        WITH NO-BOX DOWN FRAME unpaid. 
    END. 
  END. 
END. 
OUTPUT STREAM due CLOSE. 

First, the procedure writes report headers to the ovrdue.lst file. Next, the outer FOR EACH block reads each of the Orders using a DISPLAY statement to display information on each Order. If there are no values in the ShipDate and PromiseDate fields, the procedure prompts you to enter a promise date. The procedure then prompts if the order has been shipped. If it has, supply a ship date.

If there is a ship date and a promise date for an order, the procedure prompts if the order has been paid for. If not, the procedure displays the order information to the file.


OpenEdge Release 10.2B
Copyright © 2009 Progress Software Corporation
PreviousNextIndex