title: SAS Error: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required
body: <p>I have a macro with the following macro variables: cat_var, model, validate.</p>
  
  <p>When I enter the following call the macro runs fine:</p>
  
  <pre><code>%models(cat_var=mommy dadmy,model=age readhr mommy dadmy,validate=no);
  </code></pre>
  
  <p>But then when I enter this call:</p>
  
  <pre><code>%models(cat_var=mommy dadmy,model=age readhr mommy dadmy age*readhr,validate=no);
  </code></pre>
  
  <p>I get this error message:</p>
  
  <p><strong><em>A character operand was found in the %EVAL function or %IF condition
  where a numeric operand is required. The condition was: (&amp;validate =) or
  ((&amp;cat_var =) and (&amp;model =)) or ((&amp;cat_var ^=) and (&amp;model =))</em></strong></p>
  
  <p>Therefore, I believe I have isolated the issue to the following code I have written:</p>
  
  <pre><code>%if (&amp;validate =) or ((&amp;cat_var =) and (&amp;model =)) or ((&amp;cat_var ^=) and (&amp;model =)) %then 
  %put ERROR: One or more inputs are missing. Check to make sure all macro variables have an input where necessary. (It is not necessary to have cat_var inputs);
  </code></pre>
  
  <p>The logic I intended for this code to use is as follows:</p>
  
  <p>If validate is missing an input OR (cat_var AND model are missing an input) OR (cat_var is NOT missing an input AND model is missing an input) then display an error message.</p>
  
  <p>This code worked as I expected until I entered a * symbol in the model input. Is this what's screwing it up? And how can I fix this?  </p>