BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
gyambqt
Obsidian | Level 7

Hello experts,

if I have a string defined as &a and I want to grab all the string prior to @ from the whole string as defined by the %macro a %put. how do I achieve the result?

the following macro a is not working...

 

 

%let a=%str(SELECT a.ITS_ORIG_STN_CD , a.ITS_ORIG_STN_DS , b.CODE_CD, b.SUB_CODE_CD, b.CODE_TYPE_GP, b.CODE_LITERAL_DS from DS_LEAP.DS_ACCUSED a INNER JOIN DS_LEAP.DS_CODE_TABLE b ON ( a.ITS_ORIG_STN_CD = b.CODE_CD ) WHERE b.CODE_TYPE_GP = '0026' AND a.ITS_ORIG_STN_DS <> b.CODE_LITERAL_DS@a);

 

%macro a;

 

%put %scan(%nrstr(&a),1,'@');

 

%mend;

%a;

 

 

Thanks

1 ACCEPTED SOLUTION

Accepted Solutions
AhmedAl_Attar
Ammonite | Level 13
What are you expecting to get from %put %scan(%superq(a),2,%str(@));?
From your example string, there are no text after the '@' character.

View solution in original post

4 REPLIES 4
AhmedAl_Attar
Ammonite | Level 13

 

Try this,

 

%let a= %str(SELECT a.ITS_ORIG_STN_CD,a.ITS_ORIG_STN_DS,b.CODE_CD, b.SUB_CODE_CD,b.CODE_TYPE_GP,b.CODE_LITERAL_DS from DS_LEAP.DS_ACCUSED a INNER JOIN DS_LEAP.DS_CODE_TABLE b ON ( a.ITS_ORIG_STN_CD = b.CODE_CD ) WHERE b.CODE_TYPE_GP = '0026' AND a.ITS_ORIG_STN_DS <> b.CODE_LITERAL_DS@a);

%macro a;
 %put %scan(%superq(a),1,%str(@));
%mend;
%a;

Ahmed

gyambqt
Obsidian | Level 7
thanks for your reply but it doesn't work when you try
%put %scan(%superq(a),2,%str(@));
AhmedAl_Attar
Ammonite | Level 13
What are you expecting to get from %put %scan(%superq(a),2,%str(@));?
From your example string, there are no text after the '@' character.
Astounding
PROC Star

Have you tried removing the quotes from the third parameter:  @ instead of '@'

 

The quotes aren't needed, and therefore indicate that quotes are one of the characters that %SCAN should use as a delimiter.

 

%SUPERQ (as was suggested) is a good idea as well:

 

%macro a;

 

  %put %scan(%super(a), 1, @ );

 

%mend a;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1332 views
  • 1 like
  • 3 in conversation