[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

HP OpenVMS DCL Dictionary


Previous Contents Index


GOTO

Transfers control to a labeled statement in a command procedure.

Format

GOTO label


Parameter

label

Specifies a label of 1 to 255 alphanumeric characters that appears as the first item on a command line. A label cannot contain embedded blanks. When the GOTO command is executed, control passes to the command following the specified label.

When you use a label in a command procedure, it must be terminated with a colon (:). If you use duplicate labels, control is always given to the label most recently read by DCL.


Description

Use the GOTO command in command procedures to transfer control to a line that is not the next line in the procedure. The label can precede or follow the GOTO statement in the current command procedure. If the command stream is not being read from a random-access device (that is, a disk device), the GOTO command performs no operation.

If the target label of a GOTO command is inside a separate IF-THEN-ELSE construct, an error message (DCL-W-USGOTO) is returned.

When the command interpreter encounters a label, it enters the label in a label table. This table is allocated from space available in the local symbol table. If the command interpreter encounters a label that already exists in the table, the new definition replaces the existing one. Therefore, if you use duplicate labels, control is always given to the label most recently read by DCL. In general:

  • If duplicate labels precede and follow the GOTO command, control is given to the label preceding the command.
  • If duplicate labels all precede the GOTO command, control is given to the most recent label, that is, the one nearest the GOTO command.
  • If duplicate labels all follow the GOTO command, control is given to the one nearest the GOTO command.

If a label does not exist in the current command procedure, the procedure cannot continue and is forced to exit.

Note that the amount of space available for labels is limited. If a command procedure uses many symbols and contains many labels, the command interpreter may run out of table space and issue an error message.


Examples

#1

$ IF P1 .EQS. "HELP" THEN GOTO TELL 
$ IF P1 .EQS. "" THEN GOTO TELL 
   . 
   . 
   . 
$ EXIT 
$ TELL: 
$ TYPE SYS$INPUT 
To use this procedure, you must enter a value for P1. 
   . 
   . 
   . 
$ EXIT 
      

In this example, the IF command checks the first parameter passed to the command procedure; if this parameter is the string HELP or if the parameter is not specified, the GOTO command is executed and control is passed to the line labeled TELL; otherwise, the procedure continues executing until the EXIT command is encountered. At the label TELL, a TYPE command displays data in the input stream that documents how to use the procedure.

#2

$ ON ERROR THEN GOTO CHECK 
   . 
   . 
   . 
$ EXIT 
$ CHECK:  ! Error handling routine 
   . 
   . 
   . 
$ END: 
$ EXIT 
      

The ON command establishes an error-handling routine. If any command or procedure subsequently executed in the command procedure returns an error or severe error, the GOTO command transfers control to the label CHECK.


Previous Next Contents Index