בשבוע שעבר כאשר דיברנו על המערכים ב – SAS ציינתי שאחת מהנקודות שחשוב לזכור כאשר עובדים עם מערכים היא שב – SAS האינדקסים של מערך מתחילים ב – 1 ולא ב – 0 כמו במרבית שפות התכנות האחרות.
ובכן זה אכן נכון אבל זאת רק ברירת המחדל. למעשה אנחנו יכולים להגדיר ב – SAS שהמערך שלנו יתחיל בכל אינדקס שהוא אם נבקש את זה במפורש.
למה זה טוב? ברוב המוחלט של הפעמים זה אכן מיותר ו – 1 זה מספר טוב להתחיל איתו את האינדוקס אבל ישנם מקרים שעל ידי בחירה נבונה של האינדקסים אנחנו נקל משמעותית על החיים שלנו כמתכנתים.
לדוגמא, נניח שהטבלה PRICEDATA בתיקיה SASHELP כוללת את המחיר בו נמכר מוצר מסוים בשנים 2005 עד 2021 בעמודות price1 עד price17 כך שעמודה price1 היא המחיר עבור 2005, עמודה price2 היא המחיר עבור 2006 וכך הלאה.
אם אנחנו נדרשים לעבד את הנתונים בטבלה זאת אנחנו, כמובן, יכולים ליצור מערך רגיל שמתחיל ב – 1 מ – 17 העמודות הללו ולזכור בראש ש – prices[1] מייצג את 2005, prices[2] את 2006 וכך הלאה או להקל משמעותית על חיינו ופשוט לייצור מערך שהאינדקס שלו מתחיל ב – 2005. כך אם אנחנו רוצים למצוא את המחיר של שנת 2011 אנחנו לא צריכים להתחיל לחשב עם האצבעות שלנו כמה שנים עברו מ – 2005 אלא פשוט לפנות ל – prices[2011] – הרבה יותר פשוט והרבה יותר קריא:
data PRICES;
set SASHELP.PRICEDATA;
array prices{2005:2021} price1-price17;
if _n_=1 then put prices[2011]=;
run;
חגי