See: “%LOWCASE and %QLOWCASE Autocall Macros” on page 184, “%NRBQUOTE
Function” on page 264, and “%QLOWCASE Autocall Macro” on page 186
Syntax
%UPCASE(character-string | text-expression)
%QUPCASE(character-string | text-expression)
Details
The %UPCASE and %QUPCASE functions convert lowercase characters in the
argument to uppercase. %UPCASE does not mask special characters or mnemonic
operators in its result, even when the argument was previously masked by a macro
quoting function.
If the argument contains a special character or mnemonic operator, listed below, use
%QUPCASE. %QUPCASE masks the following special characters and mnemonic
operators in its result:
& % ' " ( ) + − * / < > = ¬ ^ ~ ; , # blank
AND OR NOT EQ NE LE LT GE GT IN
%UPCASE and %QUPCASE are useful in the comparison of values because the macro
facility does not automatically convert lowercase characters to uppercase before
comparing values.
Comparisons
• %QUPCASE masks the same characters as the %NRBQUOTE function.
• To convert characters to lowercase, use the %LOWCASE or %QLOWCASE
autocall macro.
Examples
Example 1: Capitalizing a Value to Be Compared
In this example, the macro RUNREPT compares a value input for the macro variable
MONTH to the string DEC. If the uppercase value of the response is DEC, then PROC
FSVIEW runs on the data set Reports.EndYear. Otherwise, PROC FSVIEW runs on the
data set with the name of the month in the Reports data library.
%macro runrept(month);
%if %upcase(&month)=DEC %then
%str(proc fsview data=reports.endyear; run;);
%else %str(proc fsview data=reports.&month; run;);
%mend runrept;
You can invoke the macro in any of these ways to satisfy the %IF condition:
%runrept(DEC)
%runrept(Dec)
%runrept(dec)
Example 2: Comparing %UPCASE and %QUPCASE
These statements show the results produced by %UPCASE and %QUPCASE:
%let a=begin;
294 Chapter 17 • Macro Functions