Using a SAS Data Set to Write SAS Code By Bob Romero • Request to see how many subscribers and non subscribers in each city in the West Division were being contacted through marketing campaigns • Hundreds of marketing campaigns are generated by marketing analysts in the western part of the United States • Files containing customer and potential customer information reside on server Use FILENAME statement with ftp and ls options to download contents into a SAS Data Set • libname perm '/export/home/mthompso/Counts/Comet/sasds'; • • • • • filename dir ftp '' ls Host=‘xxxxx' User=‘xxxxxxxxxx' Pass=‘xxxxxxx' cd='DATA_OUT/DM'; Use data step with infile and input to create SAS data set(s) • • • • • • • • • • • • • • • • • data ns_datfiles s_datfiles; infile dir dsd dlm = ' '; input cometfile : $80. ; if substr(cometfile,1,4) = '2011' then do; month = input(substr(cometfile,6,2),2.); if month = 02 then save = 1; end; if substr(cometfile,5,4) = '2011' then do; month = input(substr(cometfile,10,2),2.); if month = 02 then save = 1; end; if save then do; if index(cometfile,'_NS') > 0 then output ns_datfiles; else output s_datfiles; end; drop month save; run; Write SAS program to write SAS Code • • • • • • • • • • • • • • • • • • • • data _null_; file '/export/home/mthompso/COMET/Comet_counts_nonsub.sas'; set ns_datfiles end = last; fix = trim(left(cometfile))||"'"; put "filename dat ftp '"fix; put "Host=‘xxxxxx'"; put "User=‘xxxxxxxxxx'"; put "Pass=‘xxxxxxxx'"; put "cd='DATA_OUT/DM';"; put "data file"_n_" ;"; put "infile dat missover dsd dlm='|' firstobs=2;"; put "informat version_id $30.;"; put "input CampaignCode $ RunDate $ CellCode $ version_id $ listdetails $ SALUTATION_FULLNAME $ BILLING_ADDRESS_1 $ BILLING_ADDRESS_2 $ BILLING_CITY $ BILLING_STATE $ BILLING_ZIP $ BILLING_ZIP4 $ BILLING_DPBC $ BILLING_LOT $ BILLING_CRRT $ CORP_SYSPRIN $ BILLING_HOUSE_KEY $ BILLING_ACCT_KEY $ CSG_SPA $ CSG_SPA2 $ DIVISION_NAME $ REGION_NAME $ AUDIENCE_ID $ CMCST_MICRO_SEG $ CMCST_SUPER_SEG $ CSG_NODE $;"; put "run;"; Write proc summary code • • • • put put put put "proc summary data = file"_n_" nway ;"; "class corp_sysprin version_id;"; "output out = sum_file"_n_";"; "run;"; Concatenate Summarized Files • • • • • • • • put "data sum_file"_n_";"; put "set sum_file"_n_";"; put "cometfile = '"cometfile "';"; put "run;"; put "data perm.Comet_counts_Nonsubs;"; put "format cometfile $80. version_id $30.;"; if _n_ = 1 then put "set sum_file"_n_";"; else put "set perm.Comet_counts_nonsubs sum_file"_n_";"; • if last then put "drop _type_;"; • put "run;"; • run; Same process for Subscriber Files • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • data _null_; file '/export/home/mthompso/COMET/Comet_counts_sub.sas'; set s_datfiles end = last; fix = trim(left(cometfile))||"'"; put "filename dat ftp '"fix; put "Host='nepal'"; put "User='mktwestdiv'"; put "Pass='w3$td1v'"; put "cd='DATA_OUT/DM';"; put "data file"_n_" ;"; put "infile dat missover dsd dlm='|' firstobs=2;"; put "informat version_id $30.;"; put "input CampaignCode $ RunDate $ CellCode $ version_id $ listdetails $ SALUTATION_FULLNAME $ BILLING_ADDRESS_1 $ BILLING_ADDRESS_2 $ BILLING_CITY $ BILLING_STATE $ BILLING_ZIP $ BILLING_ZIP4 $ BILLING_DPBC $ BILLING_LOT $ BILLING_CRRT $ CORP_SYSPRIN $ BILLING_HOUSE_KEY $ BILLING_ACCT_KEY $ CSG_SPA $ CSG_SPA2 $ DIVISION_NAME $ REGION_NAME $ AUDIENCE_ID $ CMCST_MICRO_SEG $ CMCST_SUPER_SEG $ CSG_NODE $;"; put "run;"; put "proc summary data = file"_n_" nway ;"; put "class corp_sysprin version_id;"; put "output out = sum_file"_n_";"; put "run;"; put "data sum_file"_n_";"; put "set sum_file"_n_";"; put "cometfile = '"cometfile "';"; put "run;"; put "data perm.Comet_counts_subs;"; put "format cometfile $80. version_id $30.;"; if _n_ = 1 then put "set sum_file"_n_";"; else put "set perm.Comet_counts_subs sum_file"_n_";"; if last then put "drop _type_;"; put "run;"; run; Include code to run newly generated code • • %include '/export/home/mthompso/COMET/Comet_counts_nonsub.sas'; %include '/export/home/mthompso/COMET/Comet_counts_sub.sas'; • First program is 2,876 lines • Second program is 6,947 lines Conclusion Summarized Data is exported to EXCEL showing exactly how customers have been contacted in each locale Keys to success: • ls option on filename with ftp • Files have naming convention • Every dat file has same format