<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Into the macro in SAS Users Group in Israel</title>
    <link>https://communities.sas.com/t5/SAS-Users-Group-in-Israel/Into-the-macro/m-p/702211#M165</link>
    <description>&lt;P class="lia-align-right" style="direction: rtl;"&gt;בשבוע שעבר ראינו איך ניתן להגדיר משתנה מאקרו של &lt;SPAN&gt;SAS&lt;/SPAN&gt; ע"י הפקודה %let. דרך נוספת ליצירה של משתנה מאקרו היא בעזרת proc sql המוכר והטוב.&lt;/P&gt;
&lt;P class="lia-align-right"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;מילת המפתח המאפשרת את הקסם הזה היא &lt;A href="https://documentation.sas.com/?cdcId=pgmsascdc&amp;amp;cdcVersion=9.4_3.5&amp;amp;docsetId=sqlproc&amp;amp;docsetTarget=p0xlnvl46zgqffn17piej7tewe7p.htm&amp;amp;locale=en" target="_self"&gt;into&lt;/A&gt; אשר אומרת ל SAS להפנות את הנתון המתקבל לתוך משתנה מאקרו שאנחנו מציינים יחד עם נקודתיים לפני השם שלו. אם אנחנו לא משתמשים בשום פונקציה מסכמת אז הערך שמוזן למשתנה המאקרו מבוסס על השורה הראשונה בטבלה, לדוגמא:&lt;/P&gt;
&lt;P class="lia-align-right"&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select name
	into :first_name
	from sashelp.class;
quit;
%put &amp;amp;=first_name;&amp;nbsp;*&amp;nbsp;Assuming&amp;nbsp;we&amp;nbsp;know&amp;nbsp;the&amp;nbsp;value&amp;nbsp;in&amp;nbsp;the&amp;nbsp;first&amp;nbsp;row&amp;nbsp;in&amp;nbsp;the&amp;nbsp;table or just do not care;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;פונקציות סיכומיות מאפשרות לנו יותר שליטה על הערך שמוזן למשתנה המאקרו מתוך הטבלה שלנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select max(name) 
	into :max_name
	from sashelp.class;
quit;
%put &amp;amp;=max_name;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;היתרון בשיטה זו שניתן בבת אחד גם לחשב את הערך שרוצים וגם ליצור ממנו משתנה מאקרו לשימוש בהמשך התוכנית שלנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select catx('-',max(name),min(name))
	into :max_min_names
	from sashelp.class;
quit;
%put &amp;amp;=max_min_names;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;במידה והערך שאנחנו רוצים לשמור לתוך משתנה המאקרו הוא מספר, SAS ממיר אותו למחרוזת לפני השמירה כמשתנה מאקרו – משתני מאקרו מכילים תמיד טקסט, גם אם לפעמיים הטקסט מורכב מספרות ונראה כמו מספר. המרה זו עושה שימוש בפורמט שמוגדר על עמודה בטבלת המקור או בפורמט ברירת המחדל. לעיתים קרובות המרה זו מוסיפה רווחים לפני המספר עצמו ואם אנחנו רוצים להעלים אותם ניתן לעשות שימוש באופציה trimmed:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select max(age) 
	into :max_age
	from sashelp.class;
quit;
%put &amp;amp;=max_age; * Note the spaces ahead of the number;

proc sql noprint;
	select max(age) 
	into :max_age trimmed
	from sashelp.class;
quit;
%put &amp;amp;=max_age;&amp;nbsp;*&amp;nbsp;No&amp;nbsp;spaces;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;ניתן גם לשמור מספר משתנים בבת אחת:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select 
		max(weight),
		min(weight) 
	into 
		:max_weight trimmed,
		:min_weight trimmed
	from sashelp.class;
quit;
%put &amp;amp;=max_weight &amp;amp;=min_weight;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;ואפילו יותר נחמד היא האופציה separated by המאפשרת לנו לשרשר כמה ערכים ביחד לתוך משתנה מאקרו אחד מופרדים בתווים לבחירתנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select distinct  age
	into :all_ages separated by ","
	from sashelp.class;
quit;
%put &amp;amp;=all_ages;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;חגי&lt;/P&gt;</description>
    <pubDate>Sat, 28 Nov 2020 18:01:39 GMT</pubDate>
    <dc:creator>Hagay</dc:creator>
    <dc:date>2020-11-28T18:01:39Z</dc:date>
    <item>
      <title>Into the macro</title>
      <link>https://communities.sas.com/t5/SAS-Users-Group-in-Israel/Into-the-macro/m-p/702211#M165</link>
      <description>&lt;P class="lia-align-right" style="direction: rtl;"&gt;בשבוע שעבר ראינו איך ניתן להגדיר משתנה מאקרו של &lt;SPAN&gt;SAS&lt;/SPAN&gt; ע"י הפקודה %let. דרך נוספת ליצירה של משתנה מאקרו היא בעזרת proc sql המוכר והטוב.&lt;/P&gt;
&lt;P class="lia-align-right"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;מילת המפתח המאפשרת את הקסם הזה היא &lt;A href="https://documentation.sas.com/?cdcId=pgmsascdc&amp;amp;cdcVersion=9.4_3.5&amp;amp;docsetId=sqlproc&amp;amp;docsetTarget=p0xlnvl46zgqffn17piej7tewe7p.htm&amp;amp;locale=en" target="_self"&gt;into&lt;/A&gt; אשר אומרת ל SAS להפנות את הנתון המתקבל לתוך משתנה מאקרו שאנחנו מציינים יחד עם נקודתיים לפני השם שלו. אם אנחנו לא משתמשים בשום פונקציה מסכמת אז הערך שמוזן למשתנה המאקרו מבוסס על השורה הראשונה בטבלה, לדוגמא:&lt;/P&gt;
&lt;P class="lia-align-right"&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select name
	into :first_name
	from sashelp.class;
quit;
%put &amp;amp;=first_name;&amp;nbsp;*&amp;nbsp;Assuming&amp;nbsp;we&amp;nbsp;know&amp;nbsp;the&amp;nbsp;value&amp;nbsp;in&amp;nbsp;the&amp;nbsp;first&amp;nbsp;row&amp;nbsp;in&amp;nbsp;the&amp;nbsp;table or just do not care;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;פונקציות סיכומיות מאפשרות לנו יותר שליטה על הערך שמוזן למשתנה המאקרו מתוך הטבלה שלנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select max(name) 
	into :max_name
	from sashelp.class;
quit;
%put &amp;amp;=max_name;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;היתרון בשיטה זו שניתן בבת אחד גם לחשב את הערך שרוצים וגם ליצור ממנו משתנה מאקרו לשימוש בהמשך התוכנית שלנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select catx('-',max(name),min(name))
	into :max_min_names
	from sashelp.class;
quit;
%put &amp;amp;=max_min_names;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;במידה והערך שאנחנו רוצים לשמור לתוך משתנה המאקרו הוא מספר, SAS ממיר אותו למחרוזת לפני השמירה כמשתנה מאקרו – משתני מאקרו מכילים תמיד טקסט, גם אם לפעמיים הטקסט מורכב מספרות ונראה כמו מספר. המרה זו עושה שימוש בפורמט שמוגדר על עמודה בטבלת המקור או בפורמט ברירת המחדל. לעיתים קרובות המרה זו מוסיפה רווחים לפני המספר עצמו ואם אנחנו רוצים להעלים אותם ניתן לעשות שימוש באופציה trimmed:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select max(age) 
	into :max_age
	from sashelp.class;
quit;
%put &amp;amp;=max_age; * Note the spaces ahead of the number;

proc sql noprint;
	select max(age) 
	into :max_age trimmed
	from sashelp.class;
quit;
%put &amp;amp;=max_age;&amp;nbsp;*&amp;nbsp;No&amp;nbsp;spaces;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;ניתן גם לשמור מספר משתנים בבת אחת:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select 
		max(weight),
		min(weight) 
	into 
		:max_weight trimmed,
		:min_weight trimmed
	from sashelp.class;
quit;
%put &amp;amp;=max_weight &amp;amp;=min_weight;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;ואפילו יותר נחמד היא האופציה separated by המאפשרת לנו לשרשר כמה ערכים ביחד לתוך משתנה מאקרו אחד מופרדים בתווים לבחירתנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	select distinct  age
	into :all_ages separated by ","
	from sashelp.class;
quit;
%put &amp;amp;=all_ages;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;חגי&lt;/P&gt;</description>
      <pubDate>Sat, 28 Nov 2020 18:01:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Users-Group-in-Israel/Into-the-macro/m-p/702211#M165</guid>
      <dc:creator>Hagay</dc:creator>
      <dc:date>2020-11-28T18:01:39Z</dc:date>
    </item>
  </channel>
</rss>

