שלום לכולם,
בעקבות שאלה שנשאלתי היום גיליתי יכולת שלא הייתי מודע לה והיא שאפשר לייצר Informat שמוגדר על ידי ביטוי Perl. הרעיון הוא להגדיר בשפת הביטויים הנפוצה Perl את מבנה הקלט כולל אפשרות לבצע החלפות של תווים בקלט בתווים אחרים ו/או להוסיף תווים לקלט על מנת שיתאימו למבנה סטנדרטי לדוגמה אם בקלט מופיע החודש כ "1" ולא כ "01" כנדרש.
להלן דוגמה נחמדה שהכנתי שמשלימה את התאריך החלקי לתאריך מלא. שימו לב שהקלט הוא מספר רגיל בעוד הפלט לאחר הפעלת ה informat עם ה Perl הוא תאריך SAS תקני וכמו כן שימו לב שבשני המספרים אין את היום בחודש וכן שמספר החודש הוא לפעמים ספרה אחת (7) ובמקרה השני שתי ספרות (12). ה Informat מתמודד עם זה על ידי זיהוי שני המקרים והשלמת ה "חלקים החסרים".
proc format;
invalue mmyy (default=8)
's/(^\d{6}$)/01\1/o' (regexpe)=[ddmmyy8.]
's/(^\d{5}$)/010\1/o' (regexpe)=[ddmmyy8.]
;
run;
data test;
infile cards;
input d:mmyy6.;
format d ddmmyy10.;
cards;
72021
122021
;
run;
הפלט המתקבל הוא שתי רשומות עם תאריכי SAS תקניים הראשון 01/07/2021 והשני 01/12/2021
אייל