<?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 Beginner Macro Log Error in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Beginner-Macro-Log-Error/m-p/610579#M177818</link>
    <description>&lt;DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;Hi All,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I've been tasked with building out a report with the following context:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;EM&gt;The United States Department of Transportation publishes statistics on many modes of transportation. The SAS data set called AIRTRAFFIC contains data on the number of flights and passengers leaving 12 major airports in the United States. The data set contains data from each airline, for each quarter, for 20 years. In addition to the variables for year, quarter, and airline, there are two variables representing number of flights and passengers for each of the 12 airports. The variable names for the flights and passengers all start with the three-letter airport code: ATL (Atlanta), BOS (Boston), DEN (Denver), DFW (Dallas Fort Worth), EWR (Newark), HNL (Honolulu), LAX (Los Angeles), MIA (Miami), ORD (Chicago), SAN (San Diego), SEA (Seattle), and SFO (San Francisco). The data are sorted by year, airline, and quarter.&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I've been able to generate code for the first few steps: &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Examine this SAS data set including the variable labels and attributes. For BOS (Boston), create a data set that contains variables for the sum of the flights and for the sum of the passengers over all quarters, for each airline for one selected year of your choice. Use a macro variable to specify the value of the selected year.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data Airtraffic_19;
set "/folders/myfolders/airtraffic.sas7bdat";
run;
&amp;nbsp;
proc contents data = airtraffic_19;
&amp;nbsp;
&amp;nbsp;
%Let MacroYear = 2003;
procedure means data = airtraffic_19;
var Year quarter Bosflights BosPassengers;
Output out = BosAirtraffic (Drop=_type_ _freq_)
sum (Bosflights) = Sumflights
Sum (BosPassengers) =SumPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Use the data set from part a) to create another data set with one observation for the airline with the most passengers for the selected year. Create a variable that represents the number of passengers per flight for that one year and airline. Round this value to a whole number.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%Let MacroYear = 2000;
procedure means data = airtraffic_19;
var Year quarter Bosflights BosPassengers;
Output out = BosAirtraffic (Drop=_type_ _freq_)
Sum (Bosflights) = Sumflights
Sum (BosPassengers) =SumPass
MAX (BosPassengers) = MaxPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
Data Maxpass;
set BosAirTraffic;
PassengersPerF = Round (SumPass/SumFlights, 2); *Creating a variable that represents the number
of passengers per flight for that one year and airline rounded;
run;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
proc sql;
create table MaxPass2 as
select *,
max(MaxPass) as MaxPass19
From Maxpass
having MaxPass EQ calculated MaxPass19
;
Quit;
&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;***Is there a way I can forgoe the second dataset and do everything in the proc means step?&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;The last few steps are giving me some trouble: &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Convert your code for parts a) and b) into a macro so that it can be run for any airport. Call the macro once for each of the 12 airports.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;*Macro with parameters;
%Macro TopAirlines(Flights=, Passengers =,);
%Let MacroYear = 2000;
procedure means data = airtraffic_19;
Output out = "&amp;amp;Flights.AirTraffic" (Drop=_type_ _freq_)
Sum (&amp;amp;flights) = Sumflights
Sum (&amp;amp;Passengers) =SumPass
MAX (&amp;amp;Passengers) = MaxPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;
%Mend TopAirlines;
&amp;nbsp;
%TopAirlines (Flights = DENFlights, Passengers = DENPassengers)&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I get the following error in the log: &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
72
73 %TopAirlines (Flights = DENFlights, Passengers = DENPassengers);
ERROR: User does not have appropriate authorization level for library WC000002.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE MEANS used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

74
75 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
87&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I am using SAS University Edition if that means if that helps. I think the code should work but I'm not sure why it won't work. Thanks. &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Mon, 09 Dec 2019 22:39:03 GMT</pubDate>
    <dc:creator>petergomillion</dc:creator>
    <dc:date>2019-12-09T22:39:03Z</dc:date>
    <item>
      <title>Beginner Macro Log Error</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Beginner-Macro-Log-Error/m-p/610579#M177818</link>
      <description>&lt;DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;Hi All,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I've been tasked with building out a report with the following context:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;EM&gt;The United States Department of Transportation publishes statistics on many modes of transportation. The SAS data set called AIRTRAFFIC contains data on the number of flights and passengers leaving 12 major airports in the United States. The data set contains data from each airline, for each quarter, for 20 years. In addition to the variables for year, quarter, and airline, there are two variables representing number of flights and passengers for each of the 12 airports. The variable names for the flights and passengers all start with the three-letter airport code: ATL (Atlanta), BOS (Boston), DEN (Denver), DFW (Dallas Fort Worth), EWR (Newark), HNL (Honolulu), LAX (Los Angeles), MIA (Miami), ORD (Chicago), SAN (San Diego), SEA (Seattle), and SFO (San Francisco). The data are sorted by year, airline, and quarter.&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I've been able to generate code for the first few steps: &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Examine this SAS data set including the variable labels and attributes. For BOS (Boston), create a data set that contains variables for the sum of the flights and for the sum of the passengers over all quarters, for each airline for one selected year of your choice. Use a macro variable to specify the value of the selected year.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data Airtraffic_19;
set "/folders/myfolders/airtraffic.sas7bdat";
run;
&amp;nbsp;
proc contents data = airtraffic_19;
&amp;nbsp;
&amp;nbsp;
%Let MacroYear = 2003;
procedure means data = airtraffic_19;
var Year quarter Bosflights BosPassengers;
Output out = BosAirtraffic (Drop=_type_ _freq_)
sum (Bosflights) = Sumflights
Sum (BosPassengers) =SumPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Use the data set from part a) to create another data set with one observation for the airline with the most passengers for the selected year. Create a variable that represents the number of passengers per flight for that one year and airline. Round this value to a whole number.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%Let MacroYear = 2000;
procedure means data = airtraffic_19;
var Year quarter Bosflights BosPassengers;
Output out = BosAirtraffic (Drop=_type_ _freq_)
Sum (Bosflights) = Sumflights
Sum (BosPassengers) =SumPass
MAX (BosPassengers) = MaxPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
Data Maxpass;
set BosAirTraffic;
PassengersPerF = Round (SumPass/SumFlights, 2); *Creating a variable that represents the number
of passengers per flight for that one year and airline rounded;
run;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
proc sql;
create table MaxPass2 as
select *,
max(MaxPass) as MaxPass19
From Maxpass
having MaxPass EQ calculated MaxPass19
;
Quit;
&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;***Is there a way I can forgoe the second dataset and do everything in the proc means step?&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;The last few steps are giving me some trouble: &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Convert your code for parts a) and b) into a macro so that it can be run for any airport. Call the macro once for each of the 12 airports.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;*Macro with parameters;
%Macro TopAirlines(Flights=, Passengers =,);
%Let MacroYear = 2000;
procedure means data = airtraffic_19;
Output out = "&amp;amp;Flights.AirTraffic" (Drop=_type_ _freq_)
Sum (&amp;amp;flights) = Sumflights
Sum (&amp;amp;Passengers) =SumPass
MAX (&amp;amp;Passengers) = MaxPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;
%Mend TopAirlines;
&amp;nbsp;
%TopAirlines (Flights = DENFlights, Passengers = DENPassengers)&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I get the following error in the log: &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;CODE class=""&gt;&lt;/CODE&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
72
73 %TopAirlines (Flights = DENFlights, Passengers = DENPassengers);
ERROR: User does not have appropriate authorization level for library WC000002.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE MEANS used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

74
75 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
87&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I am using SAS University Edition if that means if that helps. I think the code should work but I'm not sure why it won't work. Thanks. &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 09 Dec 2019 22:39:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Beginner-Macro-Log-Error/m-p/610579#M177818</guid>
      <dc:creator>petergomillion</dc:creator>
      <dc:date>2019-12-09T22:39:03Z</dc:date>
    </item>
    <item>
      <title>Re: Beginner Macro Log Error</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Beginner-Macro-Log-Error/m-p/610595#M177824</link>
      <description>&lt;P&gt;Add the following options to help you debug macros&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Options mprint symbolgen;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;Your output statement is incorrect, you don’t need quotes around the data set name.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Tutorial on converting a working program to a macro&lt;BR /&gt;&lt;BR /&gt;This method is pretty robust and helps prevent errors and makes it much easier to debug your code. Obviously biased, because I wrote it &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; &lt;A href="https://github.com/statgeek/SAS-Tutorials/blob/master/Turning%20a%20program%20into%20a%20macro.md" target="_blank"&gt;https://github.com/statgeek/SAS-Tutorials/blob/master/Turning%20a%20program%20into%20a%20macro.md&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Examples of common macro usage&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/SAS-9-4-Macro-Language-Reference-Has-a-New-Appendix/ta-p/291716" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/SAS-9-4-Macro-Language-Reference-Has-a-New-Appendix/ta-p/291716&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/290130"&gt;@petergomillion&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;Hi All,&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I've been tasked with building out a report with the following context:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;EM&gt;The United States Department of Transportation publishes statistics on many modes of transportation. The SAS data set called AIRTRAFFIC contains data on the number of flights and passengers leaving 12 major airports in the United States. The data set contains data from each airline, for each quarter, for 20 years. In addition to the variables for year, quarter, and airline, there are two variables representing number of flights and passengers for each of the 12 airports. The variable names for the flights and passengers all start with the three-letter airport code: ATL (Atlanta), BOS (Boston), DEN (Denver), DFW (Dallas Fort Worth), EWR (Newark), HNL (Honolulu), LAX (Los Angeles), MIA (Miami), ORD (Chicago), SAN (San Diego), SEA (Seattle), and SFO (San Francisco). The data are sorted by year, airline, and quarter.&lt;/EM&gt;&lt;/DIV&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I've been able to generate code for the first few steps: &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Examine this SAS data set including the variable labels and attributes. For BOS (Boston), create a data set that contains variables for the sum of the flights and for the sum of the passengers over all quarters, for each airline for one selected year of your choice. Use a macro variable to specify the value of the selected year.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;CODE class=""&gt;&lt;/CODE&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data Airtraffic_19;
set "/folders/myfolders/airtraffic.sas7bdat";
run;
&amp;nbsp;
proc contents data = airtraffic_19;
&amp;nbsp;
&amp;nbsp;
%Let MacroYear = 2003;
procedure means data = airtraffic_19;
var Year quarter Bosflights BosPassengers;
Output out = BosAirtraffic (Drop=_type_ _freq_)
sum (Bosflights) = Sumflights
Sum (BosPassengers) =SumPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;CODE class=""&gt;&lt;/CODE&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Use the data set from part a) to create another data set with one observation for the airline with the most passengers for the selected year. Create a variable that represents the number of passengers per flight for that one year and airline. Round this value to a whole number.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;CODE class=""&gt;&lt;/CODE&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%Let MacroYear = 2000;
procedure means data = airtraffic_19;
var Year quarter Bosflights BosPassengers;
Output out = BosAirtraffic (Drop=_type_ _freq_)
Sum (Bosflights) = Sumflights
Sum (BosPassengers) =SumPass
MAX (BosPassengers) = MaxPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
Data Maxpass;
set BosAirTraffic;
PassengersPerF = Round (SumPass/SumFlights, 2); *Creating a variable that represents the number
of passengers per flight for that one year and airline rounded;
run;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
proc sql;
create table MaxPass2 as
select *,
max(MaxPass) as MaxPass19
From Maxpass
having MaxPass EQ calculated MaxPass19
;
Quit;
&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;
***Is there a way I can forgoe the second dataset and do everything in the proc means step?&lt;/DIV&gt;
&lt;CODE class=""&gt;&lt;/CODE&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;The last few steps are giving me some trouble: &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;8.1 Convert your code for parts a) and b) into a macro so that it can be run for any airport. Call the macro once for each of the 12 airports.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;CODE class=""&gt;&lt;/CODE&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;*Macro with parameters;
%Macro TopAirlines(Flights=, Passengers =,);
%Let MacroYear = 2000;
procedure means data = airtraffic_19;
Output out = "&amp;amp;Flights.AirTraffic" (Drop=_type_ _freq_)
Sum (&amp;amp;flights) = Sumflights
Sum (&amp;amp;Passengers) =SumPass
MAX (&amp;amp;Passengers) = MaxPass;
by Airline;
where Year = &amp;amp;MacroYear.; *Using a macro variable to specify the year 2003;
run;
%Mend TopAirlines;
&amp;nbsp;
%TopAirlines (Flights = DENFlights, Passengers = DENPassengers)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I get the following error in the log: &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;CODE class=""&gt;&lt;/CODE&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;CODE class=""&gt;&lt;/CODE&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
72
73 %TopAirlines (Flights = DENFlights, Passengers = DENPassengers);
ERROR: User does not have appropriate authorization level for library WC000002.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE MEANS used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

74
75 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
87&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"&gt;&lt;SPAN&gt;I am using SAS University Edition if that means if that helps. I think the code should work but I'm not sure why it won't work. Thanks. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Dec 2019 01:01:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Beginner-Macro-Log-Error/m-p/610595#M177824</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2019-12-10T01:01:01Z</dc:date>
    </item>
    <item>
      <title>Re: Beginner Macro Log Error</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Beginner-Macro-Log-Error/m-p/610598#M177825</link>
      <description>&lt;P&gt;Thanks Mate! I will review links! Removing the quotes worked!&lt;/P&gt;</description>
      <pubDate>Tue, 10 Dec 2019 01:47:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Beginner-Macro-Log-Error/m-p/610598#M177825</guid>
      <dc:creator>petergomillion</dc:creator>
      <dc:date>2019-12-10T01:47:24Z</dc:date>
    </item>
  </channel>
</rss>

