<?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: Displaying macro results in SAS Studio</title>
    <link>https://communities.sas.com/t5/SAS-Studio/Displaying-macro-results/m-p/723190#M9826</link>
    <description>&lt;P&gt;Some other issues starting with&lt;/P&gt;
&lt;PRE&gt;data &amp;amp;Job_title;&lt;BR /&gt;set &amp;amp;database;&lt;BR /&gt;if icode = &amp;amp;6191;&lt;BR /&gt;run;&lt;/PRE&gt;
&lt;P&gt;&amp;amp;6191 is not a valid macro reference. Very certain you wanted to use the macro parameter &amp;amp;icode.&lt;/P&gt;
&lt;P&gt;Second, is the value of Icode numeric or character? If character, you would need to provide quotes around the macro variable i.e.&amp;nbsp; "&amp;amp;icode."&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;184 %MEND duration;
185
186 /* Display the macro results*//*????? I am stuck here*/
187
188 proc print data=Job_title._final; run;
ERROR: Libref 'Job_title' exceeds 8 characters.&lt;/PRE&gt;
&lt;P&gt;Has several issues.&lt;/P&gt;
&lt;P&gt;First, as &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt; says, you did not attempt to execute the macro.&lt;/P&gt;
&lt;P&gt;As a minimum you would have to have something like&lt;/P&gt;
&lt;PRE&gt;%duration&lt;/PRE&gt;
&lt;P&gt;Before the Proc print.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Second if you intend to use the macro parameter in the Proc Print data= then you need to 1) use the proper reference &amp;amp;job_title and 2) it has to be where the macro variable is defined. Currently the macro variable does not exist outside of the macro %duration. OR 3) use the actual name of the created data set would would be Plumber_final if the macro runs and the data set is created.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Be aware that if you make the variable &amp;amp;job_title a global variable so it is available after the execution of the macro Duration then only the LAST value used from the last macro call will be available. So if you do something like&lt;/P&gt;
&lt;PRE&gt;%duration(job_title=plumber, icode=123)
%duration(job_title=butcher, icode=456)
%duration(job_title=baker, icode=999)
 &lt;/PRE&gt;
&lt;P&gt;Your proc print outside of the macro could only see &amp;amp;job_title as baker.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you &lt;STRONG&gt;always&lt;/STRONG&gt; want to print the data set then move the Proc print to inside the macro where the parameter would be valid.&lt;/P&gt;
&lt;P&gt;Or you need to keep track of the data set name as created an print the one you want.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 03 Mar 2021 16:04:58 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2021-03-03T16:04:58Z</dc:date>
    <item>
      <title>Displaying macro results</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Displaying-macro-results/m-p/723126#M9824</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I would appreciate if someone could check my macro code below to see how best I can display the results of the written macro. Thanks.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My main objectives:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;For each id, to check if 1&lt;SUP&gt;st&lt;/SUP&gt; job overlaps with 2&lt;SUP&gt;nd&lt;/SUP&gt; job: if not do nothing. If yes, assign 1&lt;SUP&gt;st&lt;/SUP&gt; job start year to 2&lt;SUP&gt;nd&lt;/SUP&gt; job; and&amp;nbsp; record 1&lt;SUP&gt;st&lt;/SUP&gt; job start and end years as missing, to avoid counting the same year as twice. Eg. for Osa73, jobyrout for job 1 is 31; same with jobyrin job 2.&lt;/LI&gt;
&lt;LI&gt;Repeat procedure with newly created 2&lt;SUP&gt;nd&lt;/SUP&gt; job and 3&lt;SUP&gt;rd&lt;/SUP&gt; job.&lt;/LI&gt;
&lt;LI&gt;Assign 0 to missing values &amp;nbsp;and calculate duration of each remaining job; Jobs with same start and end yrs are coded as 0.5 year&lt;/LI&gt;
&lt;LI&gt;Sum all durations to obtain final duration variable&lt;/LI&gt;
&lt;LI&gt;Create ever held job as plumber ie. if icdode 6191=plumber(1=yes).&lt;/LI&gt;
&lt;/OL&gt;
&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;My code and log are found below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have tried many code to display/view the macros results but none of them worked.[I checked SAS forum and documentation too, but no solution found].&lt;/P&gt;
&lt;P&gt;Help needed, please.&lt;/P&gt;
&lt;P&gt;Thanks.&lt;/P&gt;
&lt;P&gt;Ak.&lt;/P&gt;
&lt;PRE&gt;&lt;BR /&gt;data small_data;&lt;BR /&gt;input id$ 1-6 job 7-8 jobyrin 9-11 jobyrout 18-20  icode$ 23-27  lung$ 29-35;&lt;BR /&gt;datalines;&lt;BR /&gt;OSa13	3	73	      78	  6191	 cacase&lt;BR /&gt;OSa30	1	39	      46	  7181	 cacase&lt;BR /&gt;OSa30	3	56	      64	  6191	 cacase&lt;BR /&gt;OSa73	1	23	      31	  7181	 popcon&lt;BR /&gt;OSa73	2	31	      42	  5130	 popcon&lt;BR /&gt;OSa86	3	46	      60	  6198	 cacon&lt;BR /&gt;OSa86	4	60	      70	  5130	 cacon&lt;BR /&gt;OSa93	3	68	      72	  6121	 popcon&lt;BR /&gt;OSf26	1	54	      54	  6198	 popcon&lt;BR /&gt;OSf26	2	70	      70	  6191	 popcon&lt;BR /&gt;OSh77	1	63	      66	  6121	 cacon&lt;BR /&gt;OSh77	2	66	      70	  6121	 cacon&lt;BR /&gt;OSh77	3	70	      71	  6121	 cacon&lt;BR /&gt;OSi84	1	67	      75	  6191	 cacase&lt;BR /&gt;OSi84	2	75	      81	  6191	 cacase&lt;BR /&gt;;&lt;BR /&gt;proc print data=small_data;&lt;BR /&gt;&lt;BR /&gt;data jobd; set small_data; drop lung;&lt;BR /&gt;&lt;BR /&gt;proc freq data=jobd;&lt;BR /&gt;tables job; run;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;proc print data=jobd;&lt;BR /&gt;run;&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; /* MACRO TEST*/&lt;BR /&gt;&lt;BR /&gt;*max 4 jobs per subject in multi dataset so macro will consider a maximum of 4 potential jobs;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;%macro duration(database=small_data,icode=6191, Job_title=plumber);&lt;BR /&gt;&lt;BR /&gt;*Creating a dataset containing all the jobs with the selected CCDO 4-digit code;&lt;BR /&gt;&lt;BR /&gt;data &amp;amp;Job_title;&lt;BR /&gt;set &amp;amp;database;&lt;BR /&gt;if icode = &amp;amp;6191;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*transposing dataset so that the YEARIN and YEAROUT of all jobs held by a subject are in the same row;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*YEARIN;&lt;BR /&gt;&lt;BR /&gt;proc transpose data = &amp;amp;Job_title out = &amp;amp;Job_title._yearin prefix = YEARIN;&lt;BR /&gt;by ID;&lt;BR /&gt;var jobyrin;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;proc sort data = &amp;amp;Job_title._yearin;&lt;BR /&gt;by id;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;*YEAROUT;&lt;BR /&gt;&lt;BR /&gt;proc transpose data = &amp;amp;Job_title out = &amp;amp;Job_title._yearout prefix = YEAROUT;&lt;BR /&gt;by ID;&lt;BR /&gt;var jobyrout;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;proc sort data = &amp;amp;Job_title._yearout;&lt;BR /&gt;by id;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;data &amp;amp;Job_title._final;&lt;BR /&gt;merge &amp;amp;Job_title._yearin &amp;amp;Job_title._yearout;&lt;BR /&gt;by ID;&lt;BR /&gt;&lt;BR /&gt;array YEARIN (4) YEARIN1 YEARIN2 YEARIN3 YEARIN4;&lt;BR /&gt;array YEAROUT (4) YEAROUT1 YEAROUT2 YEAROUT3 YEAROUT4;&lt;BR /&gt;array YEARINv2 (4) YEARIN2 YEARIN3 YEARIN4 ;&lt;BR /&gt;array YEAROUTv2 (4) YEAROUT2 YEAROUT3 YEAROUT4;&lt;BR /&gt;&lt;BR /&gt;array YEARIN_F (5) YEARIN1 YEARIN2 YEARIN3 YEARIN4 YEARIN5;&lt;BR /&gt;array YEAROUT_F (5) YEAROUT1 YEAROUT2 YEAROUT3 YEAROUT4 YEAROUT5;&lt;BR /&gt;Array duration (5) Dur1 Dur2 Dur3 Dur4 Dur5;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;do i = 1 to 4;&lt;BR /&gt;&lt;BR /&gt;if yearin(i) ne . and  yearinv2(i) ne . and yearinv2(i) le yearout(i) and yearoutv2(i) ge yearout(i) then do; yearinv2(i) = yearin(i); yearin(i) = .;yearout(i) = .;end;&lt;BR /&gt;else if  yearin(i) ne . and  yearinv2(i) ne . and yearinv2(i) le yearout(i) and yearoutv2(i) lt yearout(i) then do; yearinv2(i) = yearin(i);yearoutv2(i) = yearout(i); yearin(i) = .;yearout(i) = .;end;&lt;BR /&gt;&lt;BR /&gt;end;&lt;BR /&gt;&lt;BR /&gt;do i = 1 to 5;&lt;BR /&gt;&lt;BR /&gt;if YEARIN_F(i) = . then  YEARIN_F(i) = 0;&lt;BR /&gt;if YEAROUT_F(i) = . then  YEAROUT_F(i) = 0;&lt;BR /&gt;&lt;BR /&gt;duration(i) = YEAROUT_F(i) - YEARIN_F(i);&lt;BR /&gt;if YEARIN_F(i) ne 0 and YEAROUT_F(i) = YEARIN_F(i) then duration(i) = 0.5;&lt;BR /&gt;end;&lt;BR /&gt;&lt;BR /&gt;&amp;amp;Job_title._dur = Dur1 + Dur2 + Dur3 + Dur4 + Dur5;&lt;BR /&gt;&lt;BR /&gt;&amp;amp;Job_title._ever = 1;&lt;BR /&gt;&lt;BR /&gt;keep ID &amp;amp;Job_title._dur &amp;amp;Job_title._ever;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;%MEND duration;&lt;BR /&gt;&lt;BR /&gt;/* Display the macro results*//*????? I am stuck here*/&lt;BR /&gt;&lt;BR /&gt;proc print data=Job_title._final; run;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;DIV&gt;
&lt;DIV class="sasSource"&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;72&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV class="sasSource"&gt;73 data small_data;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;74 input id$ 1-6 job 7-8 jobyrin 9-11 jobyrout 18-20 icode$ 23-27 lung$ 29-35;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;75 datalines;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote1_1614772554779" class="sasNote"&gt;NOTE: The data set WORK.SMALL_DATA has 15 observations and 6 variables.&lt;/DIV&gt;
&lt;DIV id="sasLogNote2_1614772554779" class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.01 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.02 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;91 ;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;92 proc print data=small_data;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;93&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote3_1614772554779" class="sasNote"&gt;NOTE: There were 15 observations read from the data set WORK.SMALL_DATA.&lt;/DIV&gt;
&lt;DIV id="sasLogNote4_1614772554779" class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.22 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.23 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;94 data jobd; set small_data; drop lung;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;95&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote5_1614772554779" class="sasNote"&gt;NOTE: There were 15 observations read from the data set WORK.SMALL_DATA.&lt;/DIV&gt;
&lt;DIV id="sasLogNote6_1614772554779" class="sasNote"&gt;NOTE: The data set WORK.JOBD has 15 observations and 5 variables.&lt;/DIV&gt;
&lt;DIV id="sasLogNote7_1614772554779" class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.02 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.02 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;96 proc freq data=jobd;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;97 tables job; run;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote8_1614772554779" class="sasNote"&gt;NOTE: There were 15 observations read from the data set WORK.JOBD.&lt;/DIV&gt;
&lt;DIV id="sasLogNote9_1614772554779" class="sasNote"&gt;NOTE: PROCEDURE FREQ used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.12 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.11 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;98&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;99&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;100 proc print data=jobd;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;101 run;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote10_1614772554779" class="sasNote"&gt;NOTE: There were 15 observations read from the data set WORK.JOBD.&lt;/DIV&gt;
&lt;DIV id="sasLogNote11_1614772554779" class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.16 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.16 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;102&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;103&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;104 /* MACRO TEST*/&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;105&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;106 *max 4 jobs per subject in multi dataset so macro will consider a maximum of 4 potential jobs;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;107&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;108&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;109 %macro duration(database=small_data,icode=6191, Job_title=plumber);&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;110&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;111 *Creating a dataset containing all the jobs with the selected CCDO 4-digit code;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;112&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;113 data &amp;amp;Job_title;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;114 set &amp;amp;database;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;115 if icode = &amp;amp;6191;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;116 run;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;117&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;118&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;119 *transposing dataset so that the YEARIN and YEAROUT of all jobs held by a subject are in the same row;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;120&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;121&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;122 *YEARIN;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;123&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;124 proc transpose data = &amp;amp;Job_title out = &amp;amp;Job_title._yearin prefix = YEARIN;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;125 by ID;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;126 var jobyrin;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;127 run;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;128&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;129 proc sort data = &amp;amp;Job_title._yearin;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;130 by id;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;131 run;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;132&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;133 *YEAROUT;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;134&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;135 proc transpose data = &amp;amp;Job_title out = &amp;amp;Job_title._yearout prefix = YEAROUT;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;136 by ID;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;137 var jobyrout;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;138 run;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;139&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;140 proc sort data = &amp;amp;Job_title._yearout;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;141 by id;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;142 run;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;143&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;144&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;145&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;146 data &amp;amp;Job_title._final;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;147 merge &amp;amp;Job_title._yearin &amp;amp;Job_title._yearout;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;148 by ID;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;149&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;150 array YEARIN (4) YEARIN1 YEARIN2 YEARIN3 YEARIN4;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;151 array YEAROUT (4) YEAROUT1 YEAROUT2 YEAROUT3 YEAROUT4;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;152 array YEARINv2 (4) YEARIN2 YEARIN3 YEARIN4 ;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;153 array YEAROUTv2 (4) YEAROUT2 YEAROUT3 YEAROUT4;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;154&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;155 array YEARIN_F (5) YEARIN1 YEARIN2 YEARIN3 YEARIN4 YEARIN5;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;156 array YEAROUT_F (5) YEAROUT1 YEAROUT2 YEAROUT3 YEAROUT4 YEAROUT5;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;157 Array duration (5) Dur1 Dur2 Dur3 Dur4 Dur5;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;158&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;159&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;160&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;161 do i = 1 to 4;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;162&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;163 if yearin(i) ne . and yearinv2(i) ne . and yearinv2(i) le yearout(i) and yearoutv2(i) ge yearout(i) then do; yearinv2(i)&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;163 ! = yearin(i); yearin(i) = .;yearout(i) = .;end;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;164 else if yearin(i) ne . and yearinv2(i) ne . and yearinv2(i) le yearout(i) and yearoutv2(i) lt yearout(i) then do;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;164 ! yearinv2(i) = yearin(i);yearoutv2(i) = yearout(i); yearin(i) = .;yearout(i) = .;end;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;165&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;166 end;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;167&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;168 do i = 1 to 5;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;169&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;170 if YEARIN_F(i) = . then YEARIN_F(i) = 0;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;171 if YEAROUT_F(i) = . then YEAROUT_F(i) = 0;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;172&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;173 duration(i) = YEAROUT_F(i) - YEARIN_F(i);&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;174 if YEARIN_F(i) ne 0 and YEAROUT_F(i) = YEARIN_F(i) then duration(i) = 0.5;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;175 end;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;176&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;177 &amp;amp;Job_title._dur = Dur1 + Dur2 + Dur3 + Dur4 + Dur5;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;178&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;179 &amp;amp;Job_title._ever = 1;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;180&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;181 keep ID &amp;amp;Job_title._dur &amp;amp;Job_title._ever;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;182 run;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;183&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;184 %MEND duration;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;185&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;186 /* Display the macro results*//*????? I am stuck here*/&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;187&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;188 proc print data=Job_title._final; run;&lt;/DIV&gt;
&lt;DIV id="sasLogError1_1614772554779" class="sasError"&gt;ERROR: Libref 'Job_title' exceeds 8 characters.&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="sasLogNote12_1614772554779" class="sasNote"&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/DIV&gt;
&lt;DIV id="sasLogNote13_1614772554779" class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.00 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.00 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;189&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;190&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;191&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;192 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;204&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;Thanks in advance for your help.&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;ak.&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;PRE id="pre_sasLog_179" class="sasLog"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Mar 2021 12:01:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Displaying-macro-results/m-p/723126#M9824</guid>
      <dc:creator>ak2011</dc:creator>
      <dc:date>2021-03-03T12:01:40Z</dc:date>
    </item>
    <item>
      <title>Re: Displaying macro results</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Displaying-macro-results/m-p/723128#M9825</link>
      <description>&lt;P&gt;Since it is a macro parameter, &amp;amp;JOB_TITLE is local to your macro and not available in the global symbol table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But you never actually called your macro, so no result will be created anyway.&lt;/P&gt;</description>
      <pubDate>Wed, 03 Mar 2021 12:10:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Displaying-macro-results/m-p/723128#M9825</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-03-03T12:10:26Z</dc:date>
    </item>
    <item>
      <title>Re: Displaying macro results</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Displaying-macro-results/m-p/723190#M9826</link>
      <description>&lt;P&gt;Some other issues starting with&lt;/P&gt;
&lt;PRE&gt;data &amp;amp;Job_title;&lt;BR /&gt;set &amp;amp;database;&lt;BR /&gt;if icode = &amp;amp;6191;&lt;BR /&gt;run;&lt;/PRE&gt;
&lt;P&gt;&amp;amp;6191 is not a valid macro reference. Very certain you wanted to use the macro parameter &amp;amp;icode.&lt;/P&gt;
&lt;P&gt;Second, is the value of Icode numeric or character? If character, you would need to provide quotes around the macro variable i.e.&amp;nbsp; "&amp;amp;icode."&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;184 %MEND duration;
185
186 /* Display the macro results*//*????? I am stuck here*/
187
188 proc print data=Job_title._final; run;
ERROR: Libref 'Job_title' exceeds 8 characters.&lt;/PRE&gt;
&lt;P&gt;Has several issues.&lt;/P&gt;
&lt;P&gt;First, as &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt; says, you did not attempt to execute the macro.&lt;/P&gt;
&lt;P&gt;As a minimum you would have to have something like&lt;/P&gt;
&lt;PRE&gt;%duration&lt;/PRE&gt;
&lt;P&gt;Before the Proc print.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Second if you intend to use the macro parameter in the Proc Print data= then you need to 1) use the proper reference &amp;amp;job_title and 2) it has to be where the macro variable is defined. Currently the macro variable does not exist outside of the macro %duration. OR 3) use the actual name of the created data set would would be Plumber_final if the macro runs and the data set is created.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Be aware that if you make the variable &amp;amp;job_title a global variable so it is available after the execution of the macro Duration then only the LAST value used from the last macro call will be available. So if you do something like&lt;/P&gt;
&lt;PRE&gt;%duration(job_title=plumber, icode=123)
%duration(job_title=butcher, icode=456)
%duration(job_title=baker, icode=999)
 &lt;/PRE&gt;
&lt;P&gt;Your proc print outside of the macro could only see &amp;amp;job_title as baker.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you &lt;STRONG&gt;always&lt;/STRONG&gt; want to print the data set then move the Proc print to inside the macro where the parameter would be valid.&lt;/P&gt;
&lt;P&gt;Or you need to keep track of the data set name as created an print the one you want.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Mar 2021 16:04:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Displaying-macro-results/m-p/723190#M9826</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2021-03-03T16:04:58Z</dc:date>
    </item>
  </channel>
</rss>

