式が計算されるとき、通常のターゲット属性は、ソース、実行される演算、および第 2 オペランドの属性から部分的に取り出されます。 デフォルトが使用されたり、インプリメンテーション制限事項および規則 (例えば、 最大の精度など) が存在していることもあります。 これ以降に演算が行われると、中間の結果が変換される場合があります。 式の値が計算されたあと、変数または疑似変数に割り当てるため に、その結果さらに変換されることもあります。 これらの変換は、プログラマー定義のデータが変換される場合と同じ規則に 従って行われます。例えば、以下のようになります。
declare A character(8),
B fixed decimal(3,2),
C fixed binary(10);
A = B + C;
式 B + C の計算時 およびその結果の割り当て時に、4 つの異なる結果が生じます。
最初の結果の属性は、ソース B の属性、演算子、 および一方のオペランドの属性によって決まります。 算術挿入演算子の一方のオペランドが 2 進数であれば、もう一方のオペランドは、演算の前に 2 進数に変換されます。
2 番目の結果の属性は、ソース (C と変換された 表示の B) の属性から判別します。
3 番目の結果の属性は、ソース (2 番目の結果) と 最終ターゲット A の属性とのかねあいによって決まります。 最終ターゲットによって決められる属性は、DECIMAL だけです。これは、2 進算術データを文字値に変換するには事前 10 進フォーマットに変換しておかなければならないためです。
A の属性は、DECLARE ステートメントによって決まります。