BIGENDIAN 属性と LITTLEENDIAN 属性は、関連した変数を格納する際に、最上位数字または最下位数字のどちらを最初に格納するかを指定します。 BIGENDIAN 属性と LITTLEENDIAN 属性は、FIXED BINARY 変数、ORDINAL 変数、OFFSET 変数、および AREA 変数と、VARYING ストリング変数以外では無視されます。
|
デフォルト: BIGENDIAN。ただし、Intel の場合は LITTLEENDIAN がデフォルトです。
BIGENDIAN は、変数 (可変ストリングの場合、変数の長さを表す接頭部) が格納されるときに、最上位バイトが最初に格納されることを表します。 このフォーマットは、z/OS と RS/6000 に固有のスタイルです。
LITTLEENDIAN は、それとは逆に変数の最下位バイトが最初に格納されることを表します。 このフォーマットは、Windows に固有のスタイルです。
AREA 変数に LITTLEENDIAN または BIGENDIAN 属性が設定されると、コンパイラーおよび ライブラリーによって管理される制御値を保持するフォーマットだけに影響を与えます。 AREA 変数に格納されているユーザー変数、または AREA 変数のユーザー変数を 指すのに使われるオフセット変数には、影響しません。
次の例は、BIGENDIAN 変数と LITTLEENDIAN 変数が保管される方法を示したものです。 組み込み関数 HEXIMAGE は、X と Y が、 実際に保管される方法を明らかにします。
dcl X fixed bin(15) bigendian; dcl Y fixed bin(15) littleendian; X = 258; Y = 258; display( heximage( addr(X), stg(X) ) ); /* displays 0102 */ display( heximage( addr(Y), stg(Y) ) ); /* displays 0201 */
対照的に HEX 組み込み関数は、 上の例で示された X と Y に関して、 次のような処理をします。
display (hex(X)); /* displays 0102 */ display (hex(Y)); /* displays 0102 */
BIGENDIAN と LITTLEENDIAN は、命令のセマンティクスにはなにも影響を及ぼさず、また変数のストレージ所要量にも影響しません。
BIGENDIAN 属性と LITTLEENDIAN 属性は、構造体または共用体のメンバーに影響を与えます。
BIGENDIAN と LITTLEENDIAN の使用に関する詳細は、「プログラミング・ガイド」を参照してください。
NATIVE 属性と NONNATIVE 属性は、BIGENDIAN と LITTLEENDIAN の同義語ですが、 これらの属性が BIGENDIAN と LITTLEENDIAN のどちらを意味するかは、システムによって異なります。