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

I'm receiving a SAS dataset with five integer variables (x1-x5) with different custom formats already applied. I also have the formats catalog. I want to create character variables x1_DEC through x5_DEC that contain just the decodes.

I would normally solve this by using

x1_DEC=put(x1, formatA.);

x2_DEC=put(x2, formatB.);

 

but that requires hardcoding the format names into the program. Is there a way to do this using vformat or some such function so that I can write something like

x1_DEC=put(vformat(x1));

that would dynamically read the currently assigned format?

1 ACCEPTED SOLUTION

Accepted Solutions
andreas_lds
Jade | Level 19

You can use vvalue to get the formatted value of variable:

x1_Dec = vvalue(x1);

View solution in original post

2 REPLIES 2
Astounding
PROC Star
If the name of the format is stored in a DATA step variable, use PUTN instead of PUT.
andreas_lds
Jade | Level 19

You can use vvalue to get the formatted value of variable:

x1_Dec = vvalue(x1);

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 1225 views
  • 2 likes
  • 3 in conversation