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);

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—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
  • 1329 views
  • 2 likes
  • 3 in conversation