Conditional Directives Within a Free-Form Statement

You can use the /IF, /ELSEIF, /ELSE, and /ENDIF directives within any free-form statement other than a free-form calculation statement.

However, the following rules apply:
  • If a statement begins after an /IF, /ELSEIF, or /ELSE directive, the final semicolon for the statement must be specified before the next directive.
    The following code is not valid. The DSPLY statement begins after the /IF directive, so the semicolon for the DSPLY statement must appear before the /ELSE directive.
    
       /IF DEFINED(TRUE)
           DSPLY
       /ELSE
           print
       /ENDIF
             ('start');
    
    The following code is valid. The DSPLY statement begins after the /IF directive, and the semicolon for the DSPLY statement appears before the /ELSE directive, so the entire DSPLY statement is specified between the /IF and /ELSE directives. Similarly, the entire call to print is specified between the /ELSE and /ENDIF directives.
    
       /IF DEFINED(TRUE)
           DSPLY ('start');
       /ELSE
           print ('start');
       /ENDIF
    
  • When the /IF for a conditional group begins within a statement, the /ENDIF must be specified before the final semicolon for the statement.
The following is not valid because the /IF directive is specified after the DCL-S statement begins, and the /ENDIF directive appears after the final semicolon for the DCL-S statement.

   DCL-S name
     /IF DEFINED(TRUE)
       CHAR(10);
     /ELSE
       VARCHAR(10);
     /ENDIF
The following is valid because the entire conditional group is within the statement. The semicolon for the statement appears after the /ENDIF.

   DCL-S name
     /IF DEFINED(TRUE)
       CHAR(10)
     /ELSE
       VARCHAR(10)
     /ENDIF
    ;