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

Does anyone know a way to convert the MS Access iif function to a case statement *in bulk*?

 

I'm converting Access apps to SAS and found one with dozens of iif statements and I thought it would be 'fun' (sick, yes, I know) to try to come up with a way to take this:

 

IIf(MEPE_ELIG_IND="Y",MEME_LAST_NAME,Null)

 

and write a macro so that I could simply do this:

 

%IIf(MEPE_ELIG_IND="Y",MEME_LAST_NAME,Null)

 

that would convert that to 

case when MEPE_ELIG_IND="Y" then MEME_LAST_NAME else Null end

I thought I'd be clever and just come up with something like this:

 

%macro iif(condition,true,else);
case when &condition then &true else &else end
%mend iif;

 

But, of course, SAS considers MEPE_ELIG_IND="Y" to be passing a value to the macro variable MEPE_ELIG_IND instead of a whole value for variable &condition.

Just wondered if anybody had ideas for this.

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

Why not just use the IFN() or IFC() functions instead of making a macro?

View solution in original post

5 REPLIES 5
Tom
Super User Tom
Super User

Either include the parameter name in the call:

%IIf(CONDITION=MEPE_ELIG_IND="Y",MEME_LAST_NAME,Null)

Or add parentheses around the condition.

%IIf((MEPE_ELIG_IND="Y"),MEME_LAST_NAME,Null)

Or both.

Tom
Super User Tom
Super User

Why not just use the IFN() or IFC() functions instead of making a macro?

tomrvincent
Rhodochrosite | Level 12
Doh! That did the trick! Thanks so very much!
Kurt_Bremser
Super User

Since

%IIf(MEPE_ELIG_IND="Y",MEME_LAST_NAME,Null)

takes longer to write than

ifc(MEPE_ELIG_IND="Y",MEME_LAST_NAME,"")

I really see no value in creating a macro.

tomrvincent
Rhodochrosite | Level 12
And if I'd remembered IFC I wouldn't have posted the question. No value indeed.

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
  • 5 replies
  • 1674 views
  • 5 likes
  • 3 in conversation