マクロ・プリプロセッサーは、次のオプションをサポートします。
.-UPPER-. >>-CASE--(--+-ASIS--+--)---------------------------------------><
.-DECIMAL-. >>-FIXED--(--+-BINARY--+--)------------------------------------><
>>-NAMEPREFIX--(キャラクター型)--------------------------------><
文字は「そのまま」指定される必要があります。引用符で囲んではなりません。
.-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) は、大/小文字を区別します。
set IBM.PPMACRO コマンドを使用して、マクロ・プリプロセッサーのデフォルト・オプションを設定することができます。