レコード

複数のビットフィールドから 1、2、または 4 バイトのデータを作成します。これにより、データ領域をビット単位で初期化でき、またビットフィールド名でビット演算を行うことができます。

RECORD

レコード型を宣言します。この文はレコード型(レコードタグ)を宣言するだけです。実際のレコードデータを作成するには、後述の「レコードデータ作成文」を改めて記述する必要があります。

構文    tag    RECORD    [field : bits] [= value]]
例    MTRX    RECORD    X:3,Y:3
    MTRX    RECORD    X:3=5,Y:3=5+1

tag は必須です。field は、レコードフィールドの名前です。bits は、そのフィールドが占めるビット数です。value は、フィールドのデフォルトの初期値です。

以上の組は、カンマで区切っていくつでも指定できます。

定義されるデータ型は、フィールドの合計ビット幅が 8 ビット以下ならば 1 バイト、16 ビット以下ならば 2 バイト、32 ビット以下ならば 4 バイトになります。フィールドの合計ビット幅が 32 ビットを超えてはなりません。

レコード内部では、先に宣言されたフィールドほど上位のビットを占めます。最下位ビットは常に使用され、ビットが余る場合は上位ビットが使用されません。レコードフィールド名は通常の定数として使用でき、そのフィールドの最下位ビットの番号が値になります。

レコードフィールド名を利用するための演算子として、MASK 演算子と WIDTH 演算子が用意されています。

レコードデータ作成文

あらかじめ宣言したレコード型を使用して、実際のレコードデータを作成します。

構文    label    tag    < [value ,...] > ,...
例    ABC    MTRX    <>
        MTRX    <>
    ABC    MTRX    <>,<>,<>
    ABC    MTRX    <7,8>
    ABC    MTRX    <7>
    ABC    MTRX    <,8>
    ABC    MTRX    10 DUP(<>)

label は、このデータ領域に付けるラベルで、省略できます。

tag は、あらかじめ RECORD 文によって宣言しておいたレコード型名です。

value は、データ領域の初期値です。構造体の各フィールドに対応するデータを < > 内にカンマで区切って並べます。省略すると、レコード型宣言で指定したデフォルトの初期値が使用されます。初期値は山型括弧(< >)で囲む必要があります。

[目次]