Programming in SAS

Document Sample
Programming in SAS Powered By Docstoc
					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.
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
Sequence

   Statement 1
   Statement 2
   Statement 3
   Statement 4
   Statement …
Loops
Setup Statements   Setup Statements
    DO WHILE       Statement 1
                   Statement 2
Statement 1
                   Statement 3
Statement 2
Statement 3
                        ***

     ***
                   Statement n
Statement n            DO UNTIL
DO Statement
DO;
 ...more SAS statements...
END;

DO index-variable=specification-1 <, . . .
 specification-n>;
 . . . more SAS statements . . .
END;
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.
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;
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);
Selection

   Select
        Case 1       Case 2       Case 3
  Statement 1a Statement 1b Statement 1c
  Statement 2a Statement 2b Statement 2c
  Statement 3a Statement 3c Statement 3c
  Statement … Statement … Statement …
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.
SAS Selection Constructs
   IF … THEN …; ELSE …;
   IF … THEN
         • DO;
            •    Statements
         • END
    •   ELSE
         • DO;
            •    Statements
         • END;
    •   Other else statements.
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.
   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;