XDR 共用体は識別された共用体であり、C 共用体には似ていません。XDR 共用体は Pascal 変形レコードに、より似ています。
union-definition: "union" union-ident "switch" "("simple declaration")" "{" case-list "}" case-list: "case" value ":" declaration ";" "case" value ":" declaration ";" case-list "default" ":" declaration ";"
次に、「データの読み取り」操作の結果として返される型の例を示します。エラーがない場合はデータのブロックを返し、エラーが発生した場合は何も返しません。
union read_result switch (int errno) { case 0: opaque data[1024]; default: void; };
上記のコードは以下のようにコンパイルされます。
struct read_result { int errno; union { char data[1024]; } read_result_u; }; typedef struct read_result read_result;
出力 struct の共用体構成要素が、後に付いている _u を除いて型の名称と同じ名称であることに注意してください。