מנוע ה – data step של SAS כולל בתוכו מנגנון מובנה אשר קורא את כל הרשומות מטבלת המקור אחת אחרי השני ושומר אותן לטבלת היעד אחרי כל העיבודים והחישובים שבצענו. מעבר לציון שם טבלת המקור ושם טבלת היעד אנחנו לא צריכים לעשות שום דבר כדי לגרום ללולאה הזו לעבור על כל הרשומות ולבצע עליהן את זממנו.
לעיתים אנחנו דווקא כן מעוניינים להתערב במנגנון הזה ולגרום לו לעשות דברים יותר מעניינים. הפקודה השולטת עליו היא output ובעזרתה אנחנו יכולים לקבל שליטה מדויקת יותר על איזו רשומה נרשמת ולאן. חשוב לזכור אבל שברגע שהחלטנו להתערב ידנית ולעשות שימוש בפקודה OUTPUT בעצמו SAS מסירה כל אחריות והלולאה המובנית שעפנו עליה קודם מפסיקה לפעול ומשאירה את הכל בידיים שלנו.
השימוש הבסיסי ביותר הוא לסינון הרשומות כך שנרשום לטבלת היעד רק חלק מהרשומות שבטבלת המקור:
data CLASS_TALL;
set sashelp.class;
if height>=65 then output;
run;
שימוש זה הוא כה נפוץ שבדרך כלל עושים שימוש בצורה המקוצרת שלו ואפילו לא שמים לב:
data CLASS_TALL;
set sashelp.class;
if height>=65;
run;
שימוש נוסף הוא ייצור מספר רשומות בטבלת היעד עבור כל רשומה בטבלת המקור, כמו למשל:
data CLASS_COPIES;
set sashelp.class;
length
Copy 8;
copy=1;
output;
copy=2;
output;
run;
לבסוף אנחנו יכולים גם לנתב את הרשומות מטבלת המקור למספר טבלאות יעד. ע"י שימוש בפקודות SAS יעודיות שניתן להוסיף בעת יצירת טבלה אנחנו גם יכולים לשלוט על מספר מאפיינים ביניהם השדות שירשמו לכל טבלה, השמות שלהם וכו':
data CLASS_TALLS(keep=name age)
CLASS_NOT_TALLS
CLASS_OLDS(rename=(sex=Gender))
CLASS_BOYS(drop=sex compress=yes);
set sashelp.class;
if height>=65 then output CLASS_TALLS;
else output CLASS_NOT_TALLS;
if age>=13 then output CLASS_OLDS;
if sex='M' then output CLASS_BOYS;
run;
חגי