DATA Step, Macro, Functions and more

datetime() syntax with PUT

Accepted Solution Solved
Reply
Contributor
Posts: 52
Accepted Solution

datetime() syntax with PUT

I'm runnint the following code to generate an email from sas. I'd like to put a date stamp with it. While running it I get the error 22-322 from PUT datetime(). What is the proper syntax? Thanks.

 

FILENAME outbox EMAIL ("xxx.xxx@xxx.com");

DATA _NULL_;
	FILE outbox
		TO="steve.rogers@ge.com"
		/*TO=("My.Boss@Delta.com" "My.Other.Boss@Delta.com")
		FROM=("Andrew.Hummel@Delta.com")*/
		SUBJECT=("Example of a SAS E-mail with Attachments" )
		/*ATTACH=("/sas_server/reports/Daily_Cancelled_Flight_Report.pdf"
		"/sas_server/reports/Daily_Delayed_Flight_Report.pdf");*/
		;
	PUT " ";
	PUT "Hello,";
	PUT " ";
	PUT datetime();
	/*PUT ("This is an update for ",datetime());*/
	PUT " ";
	PUT "Steve";
RUN;

Accepted Solutions
Solution
‎07-27-2017 10:59 AM
Trusted Advisor
Posts: 1,586

Re: datetime() syntax with PUT

[ Edited ]

Datetime is a function to achieve the stamptime and assign it into a variable.

Having the variable assigned you need to define a format how to display it in your email.

 

Therefore do:

FILENAME outbox EMAIL ("xxx.xxx@xxx.com");

DATA _NULL_;
  dtime = datetime();      /* <<< line added */
	FILE outbox
		TO="steve.rogers@ge.com"
		/*TO=("My.Boss@Delta.com" "My.Other.Boss@Delta.com")
		FROM=("Andrew.Hummel@Delta.com")*/
		SUBJECT=("Example of a SAS E-mail with Attachments" )
		/*ATTACH=("/sas_server/reports/Daily_Cancelled_Flight_Report.pdf"
		"/sas_server/reports/Daily_Delayed_Flight_Report.pdf");*/
		;
	PUT " ";
	PUT "Hello,";
	PUT " ";
/*	PUT datetime(); */
	PUT  dtime datetime19.;   /* line was edited according to Tom's note */
	PUT " ";
	PUT "Steve";
RUN;

 

View solution in original post


All Replies
Solution
‎07-27-2017 10:59 AM
Trusted Advisor
Posts: 1,586

Re: datetime() syntax with PUT

[ Edited ]

Datetime is a function to achieve the stamptime and assign it into a variable.

Having the variable assigned you need to define a format how to display it in your email.

 

Therefore do:

FILENAME outbox EMAIL ("xxx.xxx@xxx.com");

DATA _NULL_;
  dtime = datetime();      /* <<< line added */
	FILE outbox
		TO="steve.rogers@ge.com"
		/*TO=("My.Boss@Delta.com" "My.Other.Boss@Delta.com")
		FROM=("Andrew.Hummel@Delta.com")*/
		SUBJECT=("Example of a SAS E-mail with Attachments" )
		/*ATTACH=("/sas_server/reports/Daily_Cancelled_Flight_Report.pdf"
		"/sas_server/reports/Daily_Delayed_Flight_Report.pdf");*/
		;
	PUT " ";
	PUT "Hello,";
	PUT " ";
/*	PUT datetime(); */
	PUT  dtime datetime19.;   /* line was edited according to Tom's note */
	PUT " ";
	PUT "Steve";
RUN;

 

Super User
Super User
Posts: 7,083

Re: datetime() syntax with PUT

[ Edited ]

Note there is a "feature" of the DATATIME  format that makes using DATETIME18. useless. Even though 9 character date plus 8 character time plus 1 character separator will fit in 18 characters, the format will NOT use 4 digit years if you set the width to 18. You need to use width of at least 19.

 

data _null_;
 dt=datetime();
 put dt= datetime18.;
 put dt= datetime19.;
run;

 

dt=27JUL17:10:40:17
dt=27JUL2017:10:40:17
Contributor
Posts: 52

Re: datetime() syntax with PUT

Thanks for the simple solution.
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 106 views
  • 0 likes
  • 3 in conversation