HP OpenVMS DCL Dictionary


Previous Contents Index


IF

Tests the value of an expression and, depending on the syntax specified, executes the following:

Format

$ IF expression THEN [$] command

or

$ IF expression

$ THEN [command]

command


. . .

$ [ELSE] [command]

command


. . .

$ ENDIF

Note

HP advises against assigning a symbolic name that is already a DCL command name. HP especially discourages the assignment of symbols such as IF, THEN, ELSE, and GOTO, which can affect the interpretation of command procedures.

Parameters

expression

Defines the test to be performed. The expression can consist of one or more numeric constants, string literals, symbolic names, or lexical functions separated by logical, arithmetic, or string operators.

Expressions in IF commands are automatically evaluated during the execution of the command. Character strings beginning with alphabetic characters that are not enclosed in quotation marks (" ") are assumed to be symbol names or lexical functions. The command language interpreter (CLI) replaces these strings with their current values.

Symbol substitution in expressions in IF commands is not iterative; that is, each symbol is replaced only once. However, if you want iterative substitution, precede a symbol name with an apostrophe (') or ampersand (&).

The command interpreter does not execute an IF command when it contains an undefined symbol. Instead, the command interpreter issues a warning message and executes the next command in the procedure.

For a summary of operators and details on how to specify expressions, see the OpenVMS User's Manual.

command

Specifies the DCL command or commands to be executed, depending on the syntax specified, when the result of the expression is true or false.

Description

The IF command tests the value of an expression and executes a given command if the result of the expression is true. The expression is true if the result has an odd integer value, a character string value that begins with the letters Y, y, T, or t, or an odd numeric string value.

The expression is false if the result has an even integer value, a character string value that begins with any letter except Y, y, T, or t, or an even numeric string value.


Examples

#1

$ COUNT = 0 
$ LOOP: 
$ COUNT = COUNT + 1 
   . 
   . 
   . 
$ IF COUNT .LE. 10 THEN GOTO LOOP 
$ EXIT 
      

This example shows how to establish a loop in a command procedure, using a symbol named COUNT and an IF statement. The IF statement checks the value of COUNT and performs an EXIT command when the value of COUNT is greater than 10.

#2

$ IF P1 .EQS. "" THEN GOTO DEFAULT 
$ IF (P1 .EQS. "A") .OR. (P1 .EQS. "B") THEN GOTO 'P1' 
$ WRITE SYS$OUTPUT "Unrecognized parameter option ''P1' " 
$ EXIT 
$ A:       !  Process option a 
 . 
 .   
 .  
$ EXIT 
$ B:       !  Process option b 
 . 
 . 
 . 
$ EXIT 
$ DEFAULT: !  Default processing 
 . 
 . 
 . 
$ EXIT 
 
      

This example shows a command procedure that tests whether a parameter was passed. The GOTO command passes control to the label specified as the parameter.

If the procedure is executed with a parameter, the procedure uses that parameter to determine the label to branch to. For example:


@TESTCOM A 

When the procedure executes, it determines that P1 is not null, and branches to the label A. Note that the EXIT command causes an exit from the procedure before the label B.

#3

$  SET NOON 
 . 
 . 
 . 
$  LINK CYGNUS,DRACO,SERVICE/LIBRARY 
$ IF $STATUS 
$ THEN 
$  RUN CYGNUS 
$ ELSE 
$   WRITE SYS$OUTPUT "LINK FAILED" 
$ ENDIF 
$ EXIT 
      

This command procedure uses the SET NOON command to disable error checking by the command procedure. After the LINK command, the IF command tests the value of the reserved global symbol $STATUS. If the value of $STATUS indicates that the LINK command succeeded, then the program CYGNUS is run. If the LINK command returns an error status value, the command procedure issues a message and exits.

#4

$ if 1 .eq. 1 
$ then 
$   if 2 .eq. 2 
$   then 
$     write sys$output  "Hello!" 
$   endif 
$ endif 
      

This example shows how to use a nested IF structure.


Previous Next Contents Index