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

hi,

 

I am trying to get below word from dataset value.

 

ert_demo.sas               

demo.sas                    

v_demo.sas   

 

How to scan 'demo'    from all 3 with one code?       

1 ACCEPTED SOLUTION

Accepted Solutions
Kurt_Bremser
Super User

Double use of scan():

data have;
input longstr :$32.;
datalines;
ert_demo.sas
demo.sas
v_demo.sas
;

data want;
set have;
shortstr = scan(scan(longstr,1,'.'),-1,'_');
run;

proc print data=want noobs;
run;

Result:

longstr         shortstr

ert_demo.sas      demo  
demo.sas          demo  
v_demo.sas        demo  

View solution in original post

2 REPLIES 2
PaigeMiller
Diamond | Level 26

The FIND command will obtain the starting position of 'demo' in the character variable named TEXT

 

data want;
    set have;
    where = find(text,'demo');
run;
--
Paige Miller
Kurt_Bremser
Super User

Double use of scan():

data have;
input longstr :$32.;
datalines;
ert_demo.sas
demo.sas
v_demo.sas
;

data want;
set have;
shortstr = scan(scan(longstr,1,'.'),-1,'_');
run;

proc print data=want noobs;
run;

Result:

longstr         shortstr

ert_demo.sas      demo  
demo.sas          demo  
v_demo.sas        demo  

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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
  • 2 replies
  • 657 views
  • 0 likes
  • 3 in conversation