レイアウトのオフセット値の変更
テンプレートを使用してデータを形式設定すると、 セグメント内の情報が置き換えられることがあります。 これは、コピーブックまたはテンプレートがそのフィールドを、 セグメント内の実際のデータの右側または左側から始まるフィールドとして 定義するためです。例えば、セグメントにはヘッダー情報が含まれているが、このヘッダー情報が コピーブックの構造には定義されていない場合や、 実際のデータには存在しないヘッダー情報の定義がコピーブックに含まれている場合があります。(PL/I コピーブックは、File Manager がレコードから取り出す 4 バイト RDW フィールドを使用してコード化される場合があります。このようなフィールドは通常、データの一部とみなされません。)元となるコピーブックを変更せずにテンプレートをセグメントにマップするには、オフセット値を指定します。 これにより、テンプレートのフィールド開始位置が左または右に変更されます。
オフセット値は -32760 から 32760 までの範囲の整数であり、テンプレート内の 1 つ以上のレベル 01 フィールドに適用されます。レベル 01 セグメント・レイアウト内での各フィールドの開始位置は、この値の分だけ増減されます。正のオフセット値を指定すると、フィールドが右方向に移動して、 一部のフィールドがセグメントの長さを超える位置にマップされることがあります。セグメント・レイアウト長を超えるデータは 表示されません。指定したデータが物理的なレイアウトの終わりを超えるフィールドは (レコードが固定長であっても可変長であっても) 編集できません。負のオフセット値を指定すると、フィールドが左方向に移動して、その結果、開始位置がゼロ以下になったフィールドはすべて、表示されなくなります。
必須フィールドはすべて、正の開始位置である必要があります。必須フィールドとは、OCCURS DEPENDING ON ターゲット・フィールド、PL/I REFER フィールド、 あるいはセグメント識別基準またはフィールド選択基準で参照されるフィールドなどのことです。指定したオフセット値によって必須フィールドの開始列値がゼロ以下になる場合は、そのオフセット値は無効なので許可されません。次元フィールドの最初のエレメントの開始位置がゼロ以下である場合は、そのフィールド (すべての配列エレメント) は表示されません。
オフセットは、ID 基準または選択基準で使用するために、値の計算前に適用されます。
テンプレートを編集する場合、 「Template : Segment Layout (テンプレート : セグメント・レイアウト)」パネルで オフセット値を入力して、現在表示されているセグメント・タイプの開始位置を変更することができます。テンプレートに複数のレベル 01 フィールドが含まれている場合は、「Template : Segment Layout Selection (テンプレート : セグメント・レイアウト選択)」パネルで OFFSET 基本コマンドを使用して、1 つ以上のレベル 01 フィールドを変更できます。
単一のセグメント・タイプでオフセットを変更するには、以下のようにします。
- 「Template : Segment Layout (テンプレート : セグメント・レイアウト)」パネルの「Offset (オフセット)」フィールドに -32760 から 32760 の範囲の正または負の整数入力します。
オフセット値は、レベル 01 フィールドのセグメント長、および セグメント・レイアウト内のすべてのフィールドの開始位置に追加されます。
複数のセグメント・レイアウトでオフセットを変更するには、以下のようにします。
- 「Template : Segment Layout Selection (テンプレート : セグメント・レイアウト選択)」パネルのコマンド行に OFFSET 基本コマンドおよびオフセット値を入力します。
デフォルトでは、オフセット値は、現行オフセット値がゼロの セグメント・レイアウトすべてに適用されます。現行オフセット値に関係なく、テンプレート内のすべてのセグメント・タイプにオフセット値を適用するには、 この基本コマンドとともに ALL キーワードを使用します。特定のセグメント・レイアウトにオフセット値を適用するには、 この基本コマンドとともにレイアウト名を指定します。
オフセット値は、レベル 01 フィールドのセグメント長、および 指定したセグメント・レイアウト内のすべてのフィールドの開始位置に追加されます。
関連トピック