use macro variables to write sas scripts(beginner level) group presentati… · use macro variables...
TRANSCRIPT
![Page 1: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/1.jpg)
Use Macro Variables to write SAS Scripts(Beginner level)
By Sylvia SoResearch & Data Analyst
Data Access,
Customer Relationship Management & Data Access Unit (CRMDA)
1eSUG on Oct 24, 2017
![Page 2: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/2.jpg)
Table of Contents
2eSUG on Oct 24, 2017
![Page 3: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/3.jpg)
Background
Data Extract Parameter
Name
DOB
PHN
Type of investigation
Time Period
Diagnosis (ICD) Code
Other etc …
3eSUG on Oct 24, 2017
Submit a data request to:http://www.health.alberta.ca/initiatives/health-research.html
![Page 4: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/4.jpg)
Main Macro
%macro My_Report(Request_No, Name, DOB, PHN, etc…);
4eSUG on Oct 24, 2017
%Macro My_report();• Pull data1• Analyze• Report findings1
• Pull data2• Analyze• Report findings2
• Pull data3• Analyze• Report findings3• … …%MEND;
![Page 5: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/5.jpg)
Main Macro
%macro My_Report(Request_No, Name, DOB, PHN, etc…);
5eSUG on Oct 24, 2017
%My_Report(
Request_No=REQ-00001, Type=Investigation, First_Name=Bingo, Last_Name=Lee, PHN=123456789, DOB=01Jan1960, Periods=01jan2017:31dec2017, Excel_File=My_00001 - 100100.1.1.xlsx
);
![Page 6: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/6.jpg)
Multiple Requests
6eSUG on Oct 24, 2017
![Page 7: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/7.jpg)
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=,
parameter1=, parameter2=, parameter3=, … …, Excel_File=);%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
%My_Report(Request_No=, Type=Investigation, First_Name=, Last_Name=, PHN=, DOB=, Periods=, parameter1=, parameter2=, parameter3=, … …, Excel_File=);
Coding Manually
7eSUG on Oct 24, 2017
![Page 8: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/8.jpg)
Wouldn’t it be nice if….
8eSUG on Oct 24, 2017
![Page 9: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/9.jpg)
Option 1 – Driver Table
9eSUG on Oct 24, 2017
Request_no FirstName LastName PHN DOB Etc.
00001 Bingo Lee 123456789 01Jan1960 …
00002 Jaka So 101010101 02Feb1990 …
00003 … … … … …
00004 … … … … …
… … … … … …
![Page 10: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/10.jpg)
Option 1 – CALL EXECUTE
10eSUG on Oct 24, 2017
*Apply the “CALL EXECUTE” function;
data _null_;
Set work.driver_table;
words=‘%My_Report(...=’||trim(FirstName)||‘,…=’||trim(LastName)||‘,….)';
CALL EXECUTE(%nrstr (words));
run;
![Page 11: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/11.jpg)
Option 1 – SAS log
11eSUG on Oct 24, 2017
1 + %My_Report(REQ_no=00001, FirstName=Bingo, LastName=Lee, PHN=123456789, DOB=01Jan1960, ………..);
2 + %My_Report(REQ_no=00002, FirstName=Jaka, LastName=So, PHN=101010101, DOB=02Feb1990, ………..);
3 + %My_Report(REQ_no=00003, FirstName=xxx, LastName=xxx, PHN=xxxxxxxxxxx, DOB=xxxxxxxxx, ………..);
4 + ……
5 + ….
6 + …
![Page 12: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/12.jpg)
A Balancing Act
Read-able
Modify-able
Reuse-able
Small program
12eSUG on Oct 24, 2017
![Page 13: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/13.jpg)
… leave a trail
13eSUG on Oct 24, 2017
![Page 14: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/14.jpg)
Option 2 – PUT
14eSUG on Oct 24, 2017
*Set up location for MyScript and PUT [Words into it;
filename Myscript “$path\Myscript.sas”;
data _null_;
Set work.driver_table;file Myscript;
words=‘%My_Report(...=’||trim(FirstName)||‘,…=’||trim(LastName)||‘,….)';
PUT Words;
run;
![Page 15: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/15.jpg)
Option 2 – log.txt
15eSUG on Oct 24, 2017
![Page 16: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/16.jpg)
PUT vs CALL EXECUTE
16CRMDA unit meeting on Oct 19, 2017
*Scripting with PUT;
filename Myscript ‘Myscript.sas’;
data _null_;
Set work.driver_table;
file Myscript;
words=‘%My_Report(...)';
PUT Words;
run;
*Routine “CALL EXECUTE”;
data _null_;
Set work.driver_table;
words=‘%My_Report(...)';
CALL EXECUTE(%nrstr(words));
run;
![Page 17: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/17.jpg)
17eSUG on Oct 24, 2017
![Page 18: Use Macro Variables to write SAS Scripts(Beginner level) Group Presentati… · Use Macro Variables to write SAS Scripts (Beginner level) By Sylvia So Research & Data Analyst Data](https://reader034.vdocuments.mx/reader034/viewer/2022042201/5ea1c61b54ed5e41af46ce13/html5/thumbnails/18.jpg)
Reference
18eSUG on Oct 24, 2017
Robert Williams, Paper CC104, Let SAS® Do the Coding for You! http://analytics.ncsu.edu/sesug/2014/CC-12.pdf
Leonid Batkhan, SAS Blogs. CALL EXECUTE made easy for SAS data-driven programminghttps://blogs.sas.com/content/sgf/2017/08/02/call-execute-for-sas-data-driven-programming