マクロ・プリプロセッサーは、次のオプションをサポートします。
.-DECIMAL-. >>-FIXED--(--+-BINARY--+--)------------------------------------><
.-UPPER-. >>-CASE--(--+-ASIS--+--)---------------------------------------><
.-ASIS--. >>-RESCAN--(--+-UPPER-+--)-------------------------------------><
このオプションの影響を見るため、次のコード・フラグメントについて考えてみましょう。
%dcl eins char ext; %dcl text char ext; %eins = 'zwei'; %text = 'EINS'; display( text ); %text = 'eins'; display( text );
PP(MACRO('RESCAN(ASIS)')) で 2 番目の表示ステートメントをコンパイルすると、値 text は eins に置き換えられますが、RESCAN(ASIS) が指定されていると、eins とマクロ変数 eins では前者が asis (現状のまま) で後者が uppercase (大文字) であるために一致せず、これ以上の置き換えは行われません。したがって、次のテキストが生成されます。
DISPLAY( zwei ); DISPLAY( eins );
しかし、PP(MACRO('RESCAN(UPPER)')) で 2 番目の表示ステートメントをコンパイル すると、text の値は eins に置き換えられますが、RESCAN(UPPER) が 指定されていると、eins と、マクロ変数 eins の両方が uppercase (大文字) なので 合致し、さらに置き換えが行われます。したがって、次のテキストが生成されます。
DISPLAY( zwei ); DISPLAY( zwei );
つまり、RESCAN(UPPER) は、大文字小文字の区別を無視し、RESCAN(ASIS) は、大文字小文字を区別します。
.-INEXACT-. >>-DBCS--(--+-EXACT---+--)-------------------------------------><