UNION 属性は、DEFINED 属性よりも強力で、より多くの機能を提供します。 さらにコンパイラーは、共用体参照の場合、より優れたコードを生成します。
次の例では、変数の対 b3 と b4 が、b1 および b2 と同じ機能を実行しますが、 コンパイラーは共用体の対の場合に、より最適化されたコードを生成します。
dcl b1 bit(31);
dcl b2 bit(16) def b1;
dcl
1 * union,
2 b3 bit(32),
2 b4 bit(16);
DEFINED 属性ではなく UNION を使うコードは、誤って解釈されることが少なくなります。 共用体の中の変数宣言は 1 個所にあるので、共用体のメンバーが変更されたり、 ほかのすべてのメンバーが変更されても、それを理解しやすくなっています。 この動的変更は、DEFINED 変数を使う宣言では宣言ステートメントが複数行離れていることがあるので、 認識が難しくなります。