The macro preprocessor supports the following options:
.-DECIMAL-. >>-FIXED--(--+-BINARY--+--)------------------------------------><
.-UPPER-. >>-CASE--(--+-ASIS--+--)---------------------------------------><
.-ASIS--. >>-RESCAN--(--+-UPPER-+--)-------------------------------------><
To see the effect of this option, consider the following code fragment
%dcl eins char ext; %dcl text char ext; %eins = 'zwei'; %text = 'EINS'; display( text ); %text = 'eins'; display( text );
When compiled with PP(MACRO('RESCAN(ASIS)')), in the second display statement, the value of text is replaced by eins, but no further replacement occurs since under RESCAN(ASIS), eins does not match the macro variable eins since the former is left asis while the latter is uppercased. Hence the following text would be generated
DISPLAY( zwei ); DISPLAY( eins );
But when compiled with PP(MACRO('RESCAN(UPPER)')), in the second display statement, the value of text is replaced by eins, but further replacement does occur since under RESCAN(UPPER), eins does match the macro variable eins since both are uppercased. Hence the following text would be generated
DISPLAY( zwei ); DISPLAY( zwei );
In short: RESCAN(UPPER) ignores case while RESCAN(ASIS) does not.
.-INEXACT-. >>-DBCS--(--+-EXACT---+--)-------------------------------------><