BookmarkSubscribeRSS Feed
yonib
SAS Employee
Does someone can help me with this?
The first example I want to get aqqq 30qqq ageqqq sexqqq , i dont get it !!!!
but when im doing it in the oposite way i get what i want.
Does someone Knows whats my problem.

/*not working*/
data a;
input Class $ Age $ Sex $ ;
cards;
a 30 m y
b 60 y n
;
run;
data b;
set a;
array test Class Age Sex ;
do over test;
test=test||'qqqqqq';
end;
run;



/*works well*/

data a;
input Class $ Age $ Sex $ ;
cards;
a 30 m y
b 60 y n
;
run;
data b;
set a;
array test Class Age Sex ;
do over test;
test='qqqqqq'||test;
end;
run;
2 REPLIES 2
sbb
Lapis Lazuli | Level 10 sbb
Lapis Lazuli | Level 10
In your "not working" process, you are attempting to concatenate a data string to the end of a SAS variable. The concatenation operation does not trim trailing blanks, so your resulting SAS variable (after the array processing) has been truncated.

For what you are trying to accomplish, you must use a function to accomplish the trim, such as CATT (new with SAS 9, or TRIM -- there are others as well).

Also, if you were to add a PUT _ALL_ to your DO/END processing after the assignment, you might have some additional diagnostic information to see the execution as it is processing.

Scott Barry
SBBWorks, Inc.
yonib
SAS Employee
I got it thanks for your help!!

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
  • 2 replies
  • 1169 views
  • 0 likes
  • 2 in conversation