<?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 Re: Macros starting issue in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macros-starting-issue/m-p/308462#M66206</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"&lt;SPAN&gt;im new on sas and finding it hard to use macros" - in which case, start by thoroughly learning Base SAS which is the language you need to know. &amp;nbsp;Macro does&amp;nbsp;&lt;STRONG&gt;nothing&lt;/STRONG&gt; it is just a text generator. &amp;nbsp;If you don't understand what it is generating then you will have all kinds of problems. &amp;nbsp;There is nothing in that code you have given that cannot be done in a simple datastep, no need for pages of macro code.&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 01 Nov 2016 09:19:08 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2016-11-01T09:19:08Z</dc:date>
    <item>
      <title>Macros starting issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macros-starting-issue/m-p/308425#M66204</link>
      <description>&lt;P&gt;&lt;SPAN&gt;im new on sas and finding it hard to use macros, i have following codes&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;copies from somewhere, they are run but do nothing, i think i have problem&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;referring to input data set. kindly help me with that thanks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;***************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* ******************** W R D S R E S E A R C H M A C R O S&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******************** */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;***************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Summary : Compute Market-Model Betas */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Date : January, 2011 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Author : Rabih Moussawi */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Variables : - S: Monthly/Daily, defaults to Monthly, but s=d for CRSP&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Daily data */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* - BEGDATE: Sample Start Date */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* - ENDDATE: Sample End Date */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* - WINDOW: Window of Estimation */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* - MINWIN: Minimum Window of Estimation for non-missing betas */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* - INDEX: Market Return Variable, with default Value-Weighted (VWRETD) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* - OUTSET: Output Dataset Name (default names crsp_m or crsp_d) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;***************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;%MACRO BETA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(S=m,START=01JAN2000,END=&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;30JUN2001,WINDOW=36,MINWIN=12,&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;INDEX=VWRETD,OUTSET=&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;beta_&amp;amp;s.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Check Series: Daily or Monthly and define datasets - Default is Monthly&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%if &amp;amp;s=D %then %let s=d; %else %if &amp;amp;s ne d %then %let s=m;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%if (%sysfunc(libref(crsp))) %then %do;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;%let cs=/wrds/crsp/sasdata/;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;libname crsp ("&amp;amp;cs/m_stock","&amp;amp;cs/q_stock","&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;&amp;amp;cs/a_stock");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%end;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%let sf = crsp.&amp;amp;s.sf ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%let si = crsp.&amp;amp;&lt;/SPAN&gt;&lt;A href="http://s.si/" target="_blank" rel="noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en&amp;amp;q=http://s.si&amp;amp;source=gmail&amp;amp;ust=1478059088807000&amp;amp;usg=AFQjCNFQxPz0mqGcSzHVAO6_180AmmMMcg"&gt;s.si&lt;/A&gt;&lt;SPAN&gt; ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;options nonotes;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%put #### START. Computing Betas from &amp;amp;sf Using &amp;amp;WINDOW Estimation Window ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;data _crsp1 /view=_crsp1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;set &amp;amp;sf. ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;where "&amp;amp;START."D&amp;lt;=date&amp;lt;="&amp;amp;END."D;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;keep permno date ret;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;proc sql;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;create table _crsp2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;as select a.*, b.&amp;amp;index, b.&amp;amp;index*(abs(a.ret)&amp;gt;=0) as X, a.ret*b.&amp;amp;index as&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;XY,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;(abs(a.ret*b.&amp;amp;index)&amp;gt;=0) as count&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;from _crsp1 as a left join &amp;amp;si. as b&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;on a.date=b.date&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;order by a.permno, a.date;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;quit;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;proc printto log = junk; run;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;proc expand data=_crsp2 out=_crsp3 method=none;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;by permno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;id date;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;convert X=X2 / transformout= (MOVUSS &amp;amp;WINDOW.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;convert X=X / transformout= (MOVSUM &amp;amp;WINDOW.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;convert XY=XY / transformout= (MOVSUM &amp;amp;WINDOW.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;convert ret=Y / transformout= (MOVSUM &amp;amp;WINDOW.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;convert count=n / transformout= (MOVSUM &amp;amp;WINDOW.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;quit;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;proc printto; run;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;data &amp;amp;outset;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;set _crsp3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if n&amp;gt;=&amp;amp;MINWIN. then beta=(XY-X*Y/n) / (X2-(X**2)/n);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;label beta = "Stock Beta";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;label n = "Number of Observations used to compute Beta";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;drop X X2 XY Y COUNT;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;format beta comma8.2 ret &amp;amp;index percentn8.2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* House Cleaning */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;proc sql;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;drop view _crsp1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;drop table _crsp2, _crsp3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;quit;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;options notes;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%put #### DONE . Dataset &amp;amp;outset. Created! ; %put ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;%MEND BETA;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;***************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* ************* Material Copyright Wharton Research Data Services&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*************** */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* ****************************** All Rights Reserved&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;****************************** */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;******************************&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;***************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Nov 2016 04:00:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macros-starting-issue/m-p/308425#M66204</guid>
      <dc:creator>raqthesolid</dc:creator>
      <dc:date>2016-11-01T04:00:06Z</dc:date>
    </item>
    <item>
      <title>Re: Macros starting issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macros-starting-issue/m-p/308432#M66205</link>
      <description>&lt;P&gt;This is a macro definition. You call a macro after the definition by using the name and listing the parameters. This allows it to be reusable without repeating all the code.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Heres a basic example.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;MACRO DEFINITION -&amp;gt; Print first 10 obs of a data set.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%macro print_data(datain=);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc print data=&amp;amp;datain (obs=10);&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%mend;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;MACRO EXECUTION -&amp;gt; Execute for 2 diff datasets&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%print_data(sashelp.class);&lt;/P&gt;
&lt;P&gt;%print_data(sashelp.air);&lt;/P&gt;</description>
      <pubDate>Tue, 01 Nov 2016 05:43:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macros-starting-issue/m-p/308432#M66205</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-11-01T05:43:22Z</dc:date>
    </item>
    <item>
      <title>Re: Macros starting issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macros-starting-issue/m-p/308462#M66206</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"&lt;SPAN&gt;im new on sas and finding it hard to use macros" - in which case, start by thoroughly learning Base SAS which is the language you need to know. &amp;nbsp;Macro does&amp;nbsp;&lt;STRONG&gt;nothing&lt;/STRONG&gt; it is just a text generator. &amp;nbsp;If you don't understand what it is generating then you will have all kinds of problems. &amp;nbsp;There is nothing in that code you have given that cannot be done in a simple datastep, no need for pages of macro code.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Nov 2016 09:19:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macros-starting-issue/m-p/308462#M66206</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-11-01T09:19:08Z</dc:date>
    </item>
  </channel>
</rss>

