BookmarkSubscribeRSS Feed
SASno0b
Calcite | Level 5

Hi all, I'm still learning but I think I've gotten the basic...So I am writing a report that gets embedded in the email and emailed out, the content fits nicely for scrolling down on a phone so it looks great but I would like to use html links that will allow users to jump to certain sections of the email without having to scroll thru the entire content.  Here is the email part of my program:

 

%let attachfile1 = '~/graphincRate.png';
%let attachfile2 = '~/pieDispatchVsNot.png';

%macro sendMsg;

proc sql noprint;
	select START_DATETIME into :var from WORK.qryGetStormDates;
quit;

%if %length(&var) NE %then %do;   /* If not null... */

options emailhost='MAILHOST.xxx.COM' emailsys=smtp; 

FILENAME mail EMAIL


TO= "<email address>"

/*FROM = "<email address>"*/


%if %sysfunc(fileexist(&attachfile1)) 
	%then %do; 
		attach=("~/graphincRate.png" inlined='graphincRate')
	%end;
	%else;

%if %sysfunc(fileexist(&attachfile2)) 
	%then %do; 
		attach=("~/pieDispatchVsNot.png" inlined='pieDispatchVsNot')
	%end;
	%else;

	
/*attach=("~/graphincRate.png" inlined='graphincRate' "~/pieDispatchVsNot.png" inlined='pieDispatchVsNot')*/


SUBJECT= "*PSEGLI HOURLY STORM NOTIFICATION*"
TYPE= "text/html";

ods html3 body=mail style=htmlblue;
/*
ods escapechar='^';
ODS TEXT="^S={font_face='Arial' font_size=3 fontweight=Medium foreground=black} ";
*/

TITLE1 J=CENTER COLOR=WHITE BCOLOR=BIB "Storm Report Beginning:";
TITLE2 J=CENTER COLOR=WHITE BCOLOR=BIB "&var";
TITLE5 COLOR=WHITE BCOLOR=BIB "Status As Of: %sysfunc(INPUTN(&gblEndStm,datetime19.),NLDATML20.)";
proc print data=WORK.APPEND_TABLE_0015 noobs LABEL;
OPTIONS NOCENTER;
VAR STATUS
	CUSTOMERS
	JOBS;
    
LABEL STATUS='STATUS:'
	  CUSTOMERS='CUSTOMERS:'
      JOBS='JOBS:';
run;
TITLE1;
TITLE2;
TITLE5;

TITLE2 COLOR=WHITE BCOLOR=BIB 'Overall Dispatch Status Of Remaining Outage Jobs:';
TITLE3 '<img src=cid:pieDispatchVsNot>';
proc print data=WORK.qryDispatchedVsNot noobs LABEL;
OPTIONS NOCENTER;
VAR JOB_STATUS
	TTL_CUST_OUT
	TTL_JOBS;

LABEL JOB_STATUS='STATUS:'
	  TTL_CUST_OUT='CUSTOMERS:'
      TTL_JOBS='JOBS:';
	
run;
TITLE2;
TITLE3;

TITLE6 COLOR=WHITE BCOLOR=BIB 'Outage Jobs By Priority:';
proc print data=WORK.qryOutByPrtyAllVsNot noobs LABEL;
OPTIONS NOCENTER;
VAR OUTAGE_PRIORITY
	NOT_DISPATCH_CUST
	NOT_DISPATCH_JOBS
	ALL_CUST
	ALL_JOBS;

LABEL OUTAGE_PRIORITY='PRIORITY:'
	  NOT_DISPATCH_CUST='PENDING DISPATCH CUST:'
	  NOT_DISPATCH_JOBS='PENDING DISPATCH JOBS:'
	  ALL_CUST='ALL CUST:'
	  ALL_JOBS='ALL JOBS:';
	
run;
TITLE6;

TITLE5 COLOR=WHITE BCOLOR=BIB 'Dispatch Status By Referral Group:';
proc print data=WORK.qryJobsCustDispatchByRef1 noobs LABEL;
OPTIONS NOCENTER;
VAR REFERRED_TO
	CUST_NOT_DISPATCHED
	JOBS_NOT_DISPATCHED
	ALL_CUSTOMERS
	ALL_JOBS;

LABEL REFERRED_TO='REF GRP:'
	  CUST_NOT_DISPATCHED='PENDING DISPATCH CUST.:'
	  JOBS_NOT_DISPATCHED='PENDING DISPATCH JOBS:'
	  ALL_CUSTOMERS='ALL CUST:'
	  ALL_JOBS='ALL JOBS:';
	
run;
TITLE5;

TITLE3 COLOR=WHITE BCOLOR=BIB 'Peak Customers/Jobs Out:';
proc print data=WORK.qryGetPeakOutages noobs LABEL;
OPTIONS NOCENTER;
VAR DATETIME_FROM
	DATETIME_TO
	RT_CUSTOMERS_STILL_OUT
	RT_INCIDENTS_STILL_OUT;

LABEL DATETIME_FROM='FROM HOUR:'
	  DATETIME_TO='TO HOUR:'
	  RT_CUSTOMERS_STILL_OUT='CUSTOMERS:'
      RT_INCIDENTS_STILL_OUT='JOBS:';
	
run;
TITLE3;

TITLE8 COLOR=WHITE BCOLOR=BIB 'Incoming Rate of Outage Jobs:';
TITLE9 COLOR=WHITE BCOLOR=BIB '(Thru Last 8 Completed Hours)';
TITLE10 '<img src=cid:graphincRate>';
proc print data=WORK.QRYINCRATELAST8HRS noobs LABEL;
OPTIONS NOCENTER;
VAR DATE_INTERVAL
	DATETIME_TO
	NEW_CUSTOMERS_OUT
	NEW_INCIDENTS;

LABEL DATE_INTERVAL='FROM HOUR:'
	  DATETIME_TO='TO HOUR:'
	  NEW_CUSTOMERS_OUT='NEW CUST. OUT:'
	  NEW_INCIDENTS='NEW JOBS OUT:';	
run;
TITLE8;
TITLE9;
TITLE10;

TITLE4 COLOR=WHITE BCOLOR=BIB 'TOP 10 Impacted Areas Currently Out:';
proc print data=WORK.GETCUROUTBYVLG2 noobs LABEL;
OPTIONS NOCENTER;
VAR VILLAGE
	CUSTOMERS_OUT
	INCIDENTS_OUT;

LABEL VILLAGE='VILLAGE:'
	  CUSTOMERS_OUT='CUSTOMERS:'
      INCIDENTS_OUT='JOBS:';
	
run;
TITLE4;

ods _all_ close;

%end;

%else %return;

%mend sendMsg;

%sendMsg;

 Is there a way to do this?

1 REPLY 1
SASno0b
Calcite | Level 5

Hi SASNoob, here is an example of how to use anchor links in titles, glad I can help! Smiley Happy

 

%macro sendMsg;


options emailhost='emailhost.com' emailsys=smtp; 

FILENAME mail EMAIL


TO= "<xxx@email.com>"


/*FROM = "xxx@email.com"*/

SUBJECT= "*HOURLY STORM NOTIFICATION*"
TYPE= "text/html";

ods html3 body=mail style=htmlblue;
/*
ods escapechar='^';
ODS TEXT="^S={font_face='Arial' font_size=3 fontweight=Medium foreground=black} ";
*/

TITLE1 J=CENTER COLOR=WHITE BCOLOR=BIB "This Is The Anchor Link:";
TITLE2 '<a href="#whatever" alias="whatever" style="color:#e8008a; font-weight:bold; text-decoration:underline;">whatever</a>';
proc print data=sashelp.cars noobs LABEL;
OPTIONS NOCENTER;

run;
TITLE1;
TITLE2;


TITLE1 J=CENTER COLOR=WHITE BCOLOR=BIB "This is the Target Link:";
TITLE2 J=CENTER COLOR=WHITE BCOLOR=BIB '<a name="whatever">Destination</a>';
proc print data=sashelp.cars noobs LABEL;
OPTIONS NOCENTER;

run;
TITLE1;
TITLE2;


ods _all_ close;


%mend sendMsg;

%sendMsg;



GOPTIONS NOACCESSIBLE;
%LET _CLIENTTASKLABEL=;
%LET _CLIENTPROCESSFLOWNAME=;
%LET _CLIENTPROJECTPATH=;
%LET _CLIENTPROJECTPATHHOST=;
%LET _CLIENTPROJECTNAME=;
%LET _SASPROGRAMFILE=;
%LET _SASPROGRAMFILEHOST=;

;*';*";*/;quit;run;
ODS _ALL_ CLOSE;

SAS Innovate 2025: Call for Content

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!

Submit your idea!

Mastering the WHERE Clause in PROC SQL

SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 1 reply
  • 314 views
  • 0 likes
  • 1 in conversation