EVALR (式の評価、右寄せ)

自由形式構文 EVALR{(MR) } 結果 =
コード 演算項目 1 拡張演算項目 2
EVALR (M/R)   割り当てステートメント

EVALR 命令コードは、結果=式の形式の割り当てステートメントを評価 します。 式が評価されると、結果が結果の中で右寄せされます。 したがって、結果をリテラルまたは定数とすることはできず、固定長 の文字、図形、または UCS-2 のフィールド名、配列名、配列要素、データ構造、 データ構造サブフィールド、または %SUBST 組み込み関数を使用したストリングと しなければなりません。 式のタイプは結果のタイプと同じでなければなりません。 結果は右寄せ され、必要に応じて、左側がブランクで埋め込まれるか、左側で切り捨てられます。

注: EVAL 命令と異なり、EVALR の結果のタイプは文字、図形、または UCS-2 に しかできません。 また、固定長の結果フィールドしか使用できませんが、%SUBST に は、この組み込み関数が式の左の部分を成すのであれば、可変長フィールドを 含むことができます。

結果が指標のない配列や 配列 (*) として指定された配列を表す場合に は、演算での配列の指定に説明されている規則に従って、 結果のそれぞれの要素に式の値が割り当てられます。 そうでない場合には、式が一度評価されて、その値が配列またはサブ配列のそ れぞれの要素に入れられます。

式の概要については、を参照してください。数値式の精度に関する 規則については、数値演算の精度の規則を参照してください。これは、式に 除算命令が入っている場合、または EVALR が いずれかの命令拡張を使用する場合には、特に重要です。

図 1. EVALR 命令
 *..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++
D Name            S             20A

 /FREE
    eval  Name = 'Kurt Weill';
    // Name is now 'Kurt Weill          '
    evalr Name = 'Johann Strauss';
    // Name is now '      Johann Strauss'
    evalr %SUBST(Name:1:12) = 'Richard';
    // Name is now '     Richard Strauss'
    eval  Name = 'Wolfgang Amadeus Mozart';
    // Name is now 'Wolfgang Amadeus Moz'
    evalr Name = 'Wolfgang Amadeus Mozart';
    // Name is now 'fgang Amadeus Mozart'
 /END-FREE