Moves execution immediately to the statement label that is specified
Valid: |
in a DATA step
|
Category: |
Control
|
Type: |
Executable
|
Alias: |
GOTO
|
- label
- specifies a statement label that identifies
the GO TO destination. The destination must be within the same DATA step.
You must specify the label argument.
The GO TO statement and the
LINK statement are similar. However, a GO TO statement is often used without
a RETURN statement, whereas a LINK statement is usually used with an explicit
RETURN statement. The action of a subsequent RETURN statement differs between
the GO TO and LINK statements. A RETURN statement after a LINK statement returns
execution to the statement that follows the LINK statement. A RETURN after
a GO TO statement returns execution to the beginning of the DATA step (unless
a LINK statement precedes the GO TO statement, in which case execution continues
with the first statement after the LINK statement).
GO TO statements can often be replaced by DO-END and
IF-THEN/ELSE programming logic.
Use the GO TO statement as shown here.
- In this example, if the condition is true,
the
GO TO statement instructs SAS to jump to a label called ADD and to continue
execution from there. If the condition is false, SAS executes the PUT statement
and the statement that is associated with the GO TO label:
data info;
input x;
if 1<=x<=5 then go to add;
put x=;
add: sumx+x;
datalines;
7
6
323
;
Because every DATA step contains an implied RETURN at
the end of the step, program execution returns to the top of the step after
the sum statement is executed. Therefore, an explicit RETURN statement at
the bottom of the DATA step is not necessary.
- If you do not want the sum statement to execute
for observations that do not meet the condition, rewrite the code and include
an explicit return statement.
data info;
input x;
if 1<=x<=5 then go to add;
put x=;
return;
/* SUM statement not executed */
/* if x<1 or x>5 */
add: sumx+x;
datalines;
7
6
323
;
Copyright 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.