Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, 言語解説書

プリプロセッサー ANSWER ステートメント

プリプロセッサー ANSWER ステートメントは、 RETURNS 属性のないプリプロセッサー・プロシージャー内で だけ使用できます。

ANSWER ステートメントは、テキストを作成するか、またはほかの プリプロセッサー・プロシージャーを呼び出します。あるいは、その両方を行います。 応答されたテキストは、ソース・テキスト内のプリプロセッサー ・プロシージャーの呼び出しを置換します。 ANSWER ステートメントは 1 つのプリプロセッサー・プロシージャー内で何回でも使うことができます。

構文図を読む構文図をスキップする>>-ANSWER--+------------+--+----------------------+------------->
           '-(--exp1--)-'  +-PAGE-----------------+
                           '-SKIP--+------------+-'
                                   '-(--exp2--)-'
 
>--+--------------------+--------------------------------------->
   '-COLUMN--(--exp3--)-'
 
>--+--------------------------------------+--;-----------------><
   '-MARGINS--+-------------------------+-'
              '-(--exp4--+---------+--)-'
                         '-,--exp5-'
 

省略形 : ANSWER の場合は ANS、COLUMN の場合は COL、 MARGINS の場合は MAR です。

exp1
ANSWER テキストを表す文字式を表します。 ANSWER テキストは、単一文字ストリング定数か、または合成された プリプロセッサー式のいずれかにすることができます。

テキストが式の場合、式の計算は通常の方法で行われ、結果は単一文字ストリングに変換されます。

SCAN または RESCAN が有効な場合には、置換とプリプロセッサー・プロシージャー呼び出しのために、その文字ストリングが走査されます。 この置換はそのプリプロセッサー・プロシージャーの範囲内で行われ、応答 されたテキストが戻される範囲内で行われることはありません。 それから、応答されたテキストがソース・テキスト内のプリプロセッサー呼び出しの点に挿入されます。 テキストがソース・テキストに戻されたあとは、いかなる置換アクティビティ ーが行われても、そのテキストが走査されることはありません。

ストリング内の置換アクティビティーは、ソース・テキストの走査と置換のときに用いられるのと同じ規則に従って行われます。 を参照してください。

PAGE
%PAGE ディレクティブを生成することによって、応答テキストを出力ソースの新規のページに強制的に入れるようにします。
SKIP
応答テキストを出力ソースの新規の行に強制的に入れるようにします。 exp2 は、スキップされる行数 を指定している算術式を表します。 exp2 を省略した場合、デフォルトは 1 です。
COLUMN
ソース・プログラム行に応答テキストが入れられるときの開始カラムを指定します。 exp3 の値は、 ソース・プログラム行内の 応答テキストの開始カラム番号を示す算術式を表します。
MARGINS
出力テキストが出力レコード内に置かれる場所を指定します。 exp4 の値は、出力テキストの左マージンを示す算術式を表します。 exp5 の値は、 出力テキストの右マージンを示す算術式を表します。

exp5 に指定される値は、 MACLMAR (左マージン) 組み込み関数と MACRMAR (右マージン) 組み込み関数によって 戻される範囲内になければなりません。

ANSWER ステートメントの MARGINS オプションを指定しない場合の、 デフォルトの値は MARGINS(MACLMAR,MACRMAR) です。 オペランドを指定しないで MARGINS オプションを指定する場合は、 デフォルトの値は MARGINS(MACCOL,MACRMAR) です。

同じプリプロセッサー・プロシージャーの中で、式を指定した RETURN ステ ートメントと ANSWER ステートメントの両方を一緒に使うことはできません。

  %dcl (Expression, Single_string) entry;
  %dcl (Deactivated_macro, Statement_function) entry;
  %dcl Deactivated_variable character;
  %deact Deactivated_variable, Deactivated_macro;
  %Deactivated_variable = '** value of deactivated variable **';

  %Deactivated_macro: procedure returns( character );
     return( '** value of deactivated macro **' );
  %end;

  %Statement_function: procedure( key1 ) stmt returns( fixed );
     dcl key1 fixed;
     return( key1 + key1 );
  %end;

  %Expression: procedure;
     ANS( Counter ) skip;
     ANS( Deactivated_macro ) skip;
     ANS( Deactivated_variable ) skip;
     /* The following is invalid:                                    */
     /* ANS( Statement_function Key1(7););                           */
  %end;

  %Single_string: procedure;
     ANS( 'Counter' ) skip;
     ANS( 'Deactivated_macro' ) skip;
     ANS( 'Deactivated_variable' ) skip;
     ANS( 'Statement_function Key1( 7 );' ) skip;
  %end;


  Expression               /* Generates:                            */
                           /*   00001                               */
                           /*   ** value of deactivated macro **    */
                           /*   ** value of deactivated variable ** */

  Single_string            /* Generates:                            */
                           /*   Counter                             */
                           /*   Deactivated_macro                   */
                           /*   Deactivated_variable                */
                           /*         14                            */

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)