BookmarkSubscribeRSS Feed

Not All Macro Language Elements Are Supported by the Macro Facility

Started ‎05-28-2015 by
Modified ‎10-05-2015 by
Views 7,017

If a macro language element is created for a specific product, it will not be documented in the SAS Macro Language Reference or supported by the SAS Macro Facility. Lately, the %TSLIT macro function has been discussed in the SAS Communities because the documentation refers the customer to the SAS Macro Language Reference. The %TSLIT macro function was created for the DS2 and FEDSQL procedures. Beginning in SAS 9.4m3, documentation for %TSLIT will be located in the SAS 9.4 FedSQL Language Reference, and SAS 9.4 DS2 Language Reference.

Comments

Kind of a misleading title on this...

I was thinking the name suggests %TSLIT was developed for PROC TSSQL, it's also the procedure mentioned in the documentation internal to the macro itself.  It's a useful little utility for surrounding a given string with properly single quotes, even when the input contains embedded full or partial quotes itself.

Tom

I prefer this macro for adding single quotes. 

%macro squote(value);

%unquote(%str(%')%qsysfunc(tranwrd(%superq(value),%str(%'),''))%str(%'))

%mend squote;

Try both with an empty string.

Try both with SYMBOLGEN turned on and see which one causes your log to fill up.

, Nicely done.  As usual.

1) Why the macro name %tslit?  T-slit???  TS-lit?  Does the name make it clear the macro's functionality?  Is it easy to remember?

 

2) Beyond the strange name, can't SAS just make this code the %tslit macro?  It seems better than the OOTB version.

 

3) In case someone finds this post in the future...I did a bunch of testing with unbalanced single quotes.  These are the only use cases I could get to work:

 

 

* this works because the parameter is macro quoted, ;
* and the %squote macro returns balanced quotation marks ;
* so the %put statement works ;
%let mvar=%bquote(P.J. O'Briens);   %put %squote(&mvar);
* this works ;
%let mvar=%bquote(P.J. O'Briens);
%let newmvar = %squote(&mvar);
%put &=newmvar;  

I've stolen this macro and added it to my kitbag.  Tom, I've tried to give you full attribution.  If you prefer I give your full name, email address, and home address, just let me know ;).  Seriously, let me know if you want me to pull it down from GitHub.  Thanks for the useful macro.

 

https://github.com/scottbass/SAS/blob/master/Macro/squote.sas

Hi @ScottBass, TSLIT comes from "Table Server literal" -- Table Server Programming Language (PROC TSPL) was an early name for what we now call PROC DS2.  And the %tslit macro is an approach to compensate for the way that databases usually require single quotes for literals (unlike SAS, which is happy with single or double quotes), and sometimes the values you're using are messy with odd quotes or apostrophes in the mix.

 

So is it easy to remember?  Sure, if you're a SAS historian.  Otherwise it's just like another function whose name doesn't really tell the whole story, but still it does exactly what you need.

Version history
Last update:
‎10-05-2015 03:13 PM
Updated by:

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

SAS AI and Machine Learning Courses

The rapid growth of AI technologies is driving an AI skills gap and demand for AI talent. Ready to grow your AI literacy? SAS offers free ways to get started for beginners, business leaders, and analytics professionals of all skill levels. Your future self will thank you.

Get started

Article Labels
Article Tags