14
Programming in SAS How SAS implements structured programming constructs

Programming in SAS How SAS implements structured programming constructs

Embed Size (px)

Citation preview

Page 1: Programming in SAS How SAS implements structured programming constructs

Programming in SAS

How SAS implements structured programming

constructs

Page 2: Programming in SAS How SAS implements structured programming constructs

SAS Philosophy

The “Elephant philosophy

of programming”

Remove everything that doesn’t look like an elephant.

SAS manipulates tables one row at a time.

Page 3: Programming in SAS How SAS implements structured programming constructs

DATA Steps Program statements are executed within data steps Code is executed in the order that it appears Instruction sets in SAS end with a DATA, PROC, or RUN

statement Each DATA step executes an implied loop from the first

read statement (SET, MERGE, INPUT, etc.) to the start of the next instruction set

Data records are output at the end of the instruction set (implied OUTPUT) unless there is an OUTPUT statement

Page 4: Programming in SAS How SAS implements structured programming constructs

Sequence

Statement 1

Statement 2

Statement 3

Statement 4

Statement …

Page 5: Programming in SAS How SAS implements structured programming constructs

Loops

DO WHILE

Statement 1

Statement 2

Statement 3

Statement n

***

Statement 1

Statement 2

Statement 3

Statement n

***

DO UNTIL

Setup Statements Setup Statements

Page 6: Programming in SAS How SAS implements structured programming constructs

DO Statement

DO; ...more SAS statements...

END;

DO index-variable=specification-1 <, . . . specification-n>; . . . more SAS statements . . .

END;

Page 7: Programming in SAS How SAS implements structured programming constructs

DO WHILE|UNTIL Statement

The UNTIL expression is evaluated at the bottom of the loop after the statements in the DO loop have been executed. If the expression is true, the DO loop does not iterate again.

The WHILE expression is evaluated at the top of the loop before the statements in the DO loop are executed. If the expression is true, the DO loop iterates. If the expression is false the first time it is evaluated, the DO loop does not iterate even once.

Page 8: Programming in SAS How SAS implements structured programming constructs

Examples

n=0; do while(n<5);

n= n+1;put n;

end;

n=0; do until (n<5);

n= n+1;put n;

end;

Page 9: Programming in SAS How SAS implements structured programming constructs

Examples

do i=1 to 10; do count=2 to 8 by 2; do i=1 to 10 while (x<y); do i=2 to 20 by 2 until((x/3)>y);

Page 10: Programming in SAS How SAS implements structured programming constructs

Selection

Statement 1a Statement 1b Statement 1c

Statement 2a Statement 2b Statement 2c

Statement 3a Statement 3c Statement 3c

Statement … Statement … Statement …

Select

Case 1 Case 2 Case 3

Page 11: Programming in SAS How SAS implements structured programming constructs

IF-THEN/ELSE Statement

IF expression THEN statement; <ELSE statement;>

Arguments expression

• is any SAS expression and is a required argument.

statement • can be any executable SAS statement or DO group.

Page 12: Programming in SAS How SAS implements structured programming constructs

SAS Selection Constructs

IF … THEN …; ELSE …; IF … THEN

• DO;

• Statements

• END• ELSE

• DO;

• Statements

• END;• Other else statements.

Page 13: Programming in SAS How SAS implements structured programming constructs

SELECT Statement

SELECT <(select-expression)>;

WHEN-1 (when-expression-1 <..., when-expression-n>) statement;

<... WHEN-n (when-expression-1 <..., when-expression-n>) statement;>

<OTHERWISE statement;END;

• (select-expression) specifies any SAS expression that evaluates to a single value.

• (when-expression) specifies any SAS expression, including a compound expression.

Page 14: Programming in SAS How SAS implements structured programming constructs

SAS Selection Constructs (cont.)

SELECT (payclass);

WHEN ('monthly') amt=salary;

WHEN ('hourly')

DO;

amt=hrlywage*min(hrs,40);

IF hrs>40 THEN PUT 'Check Timecard';

END; /* end of do */

OTHERWISE PUT 'Problem Observation';

END;