Hi,
It is possible to use a format as value for a url= style option?
Example 1 - Same URL for all the values
ods pdf file='eg1.pdf';
proc report data=class spanrows;
column sex--weight;
define sex / order style(column)=[url = 'https://sas.com'];
define height--weight / display;
run;
ods pdf close;
Example 2 - Using a format (doesn't work)
proc format;
value $ url 'M'='https://sas.com'
'F'='https://communities.sas.com/';
run;
ods pdf file='eg2.pdf';
proc report data=class spanrows;
column sex--weight;
define sex / order style(column)=[url = $url.];
define height--weight / display;
run;
ods pdf close;
Example 3 - Using call define (workaround)
ods pdf file='eg3.pdf';
proc report data=class spanrows;
column sex--weight;
define sex / order;
define height--weight / display;
compute sex;
if sex='M' then call define (_COL_,'url','https://sas.com');
else call define (_COL_,'url','https://communities.sas.com/');
endcomp;
run;
ods pdf close;
Regards,
Hi,
Thanks Cynthia, testing again with your program helped me realize that the code I sent missed a format.
The $URL applies to the formatted value of sex, not the unformatted value as I was expecting.
Here is an example:
proc format;
value $ sex 'M'='Male'
'F'='Female';
*value $ url 'M'='https://sas.com'
'F'='https://communities.sas.com/'; *it does not work;
value $ url 'Male'='https://sas.com'
'Female'='https://communities.sas.com/'; *it works;
run;
ods pdf file='eg2.pdf';
proc report data=class spanrows;
column sex--weight;
define sex / order format=$sex. style(column)=[url = $url.];
define height--weight / display;
run;
ods pdf close;
Hi:
The format approach should work. It worked for me using SASHELP.CLASS:
proc format;
value $url 'M'='https://www.sas.com'
'F'='https://www.google.com';
run;
ods pdf(id=1) file="c:\temp\url_examp.pdf";
ods html(id=2) path='c:\temp' (url=none) file='url_examp.html';
ods rtf(id=3) file="c:\temp\url_examp.rtf";
proc report data=sashelp.class spanrows;
title 'URL example with format';
column sex age name height weight;
define sex / order style(column)=[url=$url.];
run;
ods pdf(id=1) close;
ods html(id=2) close;
ods rtf(id=3) close;
The CALL DEFINE example, but I prefer using it for making dynamic URLs:
ods pdf(id=1) file="c:\temp\url_dyn.pdf";
ods html(id=2) path='c:\temp' (url=none) file='url_dyn.html';
ods rtf(id=3) file="c:\temp\url_dyn.rtf";
proc report data=sashelp.class(obs=5) spanrows;
title 'URL example with call define';
column sex age name height weight;
define sex / order;
compute name;
urlstr = catt('https://www.google.com/search?q=books+',name);
call define(_col_,'url',urlstr);
endcomp;
run;
ods pdf(id=1) close;
ods html(id=2) close;
ods rtf(id=3) close;
Cynthia
Hi,
Thanks Cynthia, testing again with your program helped me realize that the code I sent missed a format.
The $URL applies to the formatted value of sex, not the unformatted value as I was expecting.
Here is an example:
proc format;
value $ sex 'M'='Male'
'F'='Female';
*value $ url 'M'='https://sas.com'
'F'='https://communities.sas.com/'; *it does not work;
value $ url 'Male'='https://sas.com'
'Female'='https://communities.sas.com/'; *it works;
run;
ods pdf file='eg2.pdf';
proc report data=class spanrows;
column sex--weight;
define sex / order format=$sex. style(column)=[url = $url.];
define height--weight / display;
run;
ods pdf close;
Hello,
Can you show the LOG because for me it works fine?
I haven't used PDF as output destination though but that cannot be the reason of your problem.
Koen
There is no issue in the log. There is just no link created in the PDF file.
It might be dependent on the way you look at the pdf file. Resolving URL strings to a link is a matter of the user agent.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.