このセクションでは、マクロ・プリプロセッサーがサポートするオプションについて説明します。
このオプションは、プリプロセッサーが入力テキストを大文字に変換するかどうかを指定します。
.-UPPER-. >>-CASE--(--+-ASIS--+--)---------------------------------------><
このオプションは、テキスト置換時にプリプロセッサーが DBCS を正規化するかどうかを指定します。
.-INEXACT-. >>-DBCS--(--+-EXACT---+--)-------------------------------------><
このオプションは、FIXED 変数のデフォルト基数を指定します。
.-DECIMAL-. >>-FIXED--(--+-BINARY--+--)------------------------------------><
INCONLY オプションは、プリプロセッサーで %INCLUDE および %XINCLUDE ステートメントのみを処理する必要があることを指定します。
NOINCONLY オプションは、プリプロセッサーですべてのプリプロセッサー・ステートメントを処理する必要があり、%INCLUDE および %XINCLUDE ステートメントのみではないことを指定します。
.-NOINCONLY-. >>-+-INCONLY---+-----------------------------------------------><
INCONLY オプションが有効になると、マクロとして INCLUDE も XINCLUDE も使用できなくなります。
INCONLY オプションおよび NOINCONLY オプションは同時に指定できません。
また、互換性のため、NOINCONLY がデフォルトです。
NAMEPREFIX オプションは、プリプロセッサー・プロシージャーおよび変数の名前の先頭文字が指定された文字でなければならないことを指定します。
NONAMEPREFIX オプションは、プリプロセッサー・プロシージャーおよび変数の名前が特定の 1 文字で始まる必要がないことを指定します。
.-NONAMEPREFIX------------. >>-+-NAMEPREFIX--(character)-+---------------------------------><
文字は「現状のまま」で指定し、引用符で囲まないようにしてください。
デフォルトは NONAMEPREFIX です。
このオプションは、テキストの再スキャンのとき、プリプロセッサーが ID の大文字小文字をどのように処理するかを指定します。
.-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) は、大文字小文字を区別します。