EVALR (式の評価、右寄せ)

コード 演算項目 1 拡張演算項目 2
EVALR (M/R) (EVALR (M/R))   割り当てステートメント

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

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

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

CHARCOUNT モードが EVALR に与える影響については、 異なる文字サイズのデータの右寄せ割り当てを参照してください。
注: CHARCOUNT NATURAL モードが有効な場合は、EVALR を %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