同期化とオフセット

上図では、A と B は、実際のストレージ内で互いに連続しているとは限らないことに注意してください。 言い替えると、B は A の開始点から 16 バイト後、または 48 バイト (16 x 3) 後、または 16 x N バイト後のどれで開始するかユーザーには分からないということです。 オフセットを指定することによって、同期化データを取り出そうとしてはなりません。

IBM Extension

SYNCHRONIZED 文節は、ポインター・データ項目とプロシージャー・ポインター・データ項目に対しては暗黙指定されます。 リンケージ・セクションで宣言されたポインター・データ項目とプロシージャー・ポインター・データ項目は同期化されません。

SYNCHRONIZED 文節は TYPE 文節と同じデータ記述記入項目に指定することはできません。

DBCS、国別、外部浮動小数点、日付、時刻、またはタイム・スタンプのデータ項目に対する SYNCHRONIZED 文節は無視されます。

COMPUTATIONAL-1 データ項目の SYNCHRONIZED 文節は、フルワード境界でデータの位置合わせを行います。

COMPUTATIONAL-2 データ項目の SYNCHRONIZED 文節は、ダブルワード境界でデータの位置合わせを行います。

End of IBM Extension

項目に指定される USAGE によっては、SYNCHRONIZED 文節が特定の効果を持つ場合があります。表 1 に、ある項目の USAGE でどのように SYNCHRONIZED 文節がそれに影響を与えるかを示しています。

表 1. データ項目 USAGE および SYNCHRONIZED 文節
USAGE の指定 SYNCHRONIZED 文節の処理
DISPLAY 構文検査されますが、実行には影響しません
DISPLAY-1 (DBCS) 無視されます
NATIONAL 無視されます
PACKED-DECIMAL 構文検査されますが、実行には影響しません
COMPUTATIONAL-1 フルワード境界でデータの位置合わせをします
COMPUTATIONAL-2 ダブルワード境界でデータの位置合わせをします
COMPUTATIONAL-3 構文検査されますが、実行には影響しません

BINARY:
  PIC S9(1) ~ PIC S9(4)

レコードの先頭から 2 の倍数位置にデータ項目を位置合わせします

BINARY:
  PIC S9(5) ~ PIC S9(9)

レコードの先頭から 4 の倍数位置にデータ項目を位置合わせします

BINARY:
  PIC S9(10) ~ PIC S9(18)

レコードの先頭から 8 の倍数位置にデータ項目を位置合わせします
COMPUTATIONAL-4 USAGE BINARY の場合と同様に機能します
COMPUTATIONAL-5 USAGE BINARY の場合と同様に機能します
COMPUTATIONAL 構文検査されますが、実行には影響しません
INDEX 使えません
POINTER レコードの先頭から 16 の倍数の位置にデータ項目を位置合わせします
PROCEDURE-POINTER USAGE POINTER の場合と同様に機能します

基本項目の長さが、SYNCHRONIZED 文節によって影響を受けることはありません。