SYNCHRONIZED 文節は、ストレージ内の自然境界に基本項目の位置合わせを行うように指定します。
| フォーマット |
|---|
|
SYNC は、SYNCHRONIZED の省略形で意味は同じです。
SYNCHRONIZED 文節は必須ではありませんが、算術演算に使用される 2 進数項目に対してシステムによってはパフォーマンスが向上します。
SYNCHRONIZED 文節は、基本項目に対して、またはレベル 01 グループ項目に対して指定できます。その場合、そのグループ項目内のすべての基本項目が同期化されます。
LEFT 句と RIGHT 句が指定されたときは、構文チェックが行われますが、それはプログラムの実行に何も影響しません。
基本項目の長さは、SYNCHRONIZED 文節を指定しても変化することはありません。
以下の図に、SYNCHRONIZE 文節が他の言語エレメントに与える影響を示します。
| 言語エレメント | コメント |
|---|---|
| OCCURS 文節 | OCCURS 文節のスコープ内の項目について指定すると、 その項目の各オカレンスが同期化されます。 |
| USAGE DISPLAY または PACKED-DECIMAL | 各項目が構文チェックされますが、 SYNCHRONIZED 文節の実行には何も影響しません。 |
| USAGE NATIONAL | 各項目が構文チェックされますが、 SYNCHRONIZED 文節の実行には何も影響しません。 |
| USAGE BINARY または COMPUTATIONAL | REDEFINES 文節を含む項目の従属基本項目のうち最初のものについて指定した場合は、その項目に未使用の文字位置を追加する必要はまったくありません。
SYNCHRONIZED 文節が、従属データ項目 (レベル番号が 02 から 49 のデータ項目) に対して指定されていないときは、 位置合わせに関して次の点を考慮する必要があります。
SYNCHRONIZED 文節が 2 進数項目に対して指定されないとき、遊びバイト用のスペースは確保されません。 |
| USAGE POINTER、 PROCEDURE-POINTER、 FUNCTION-POINTER、 OBJECT REFERENCE | データはフルワード境界に位置合わせされます。 |
| USAGE COMPUTATIONAL-1 | データはフルワード境界に位置合わせされます。 |
| USAGE COMPUTATIONAL-2 | データはダブルワード境界に位置合わせされます。 |
| USAGE COMPUTATIONAL-3 | データは、PACKED-DECIMAL 項目の SYNCHRONIZED 文節と同様に扱われます。 |
| USAGE COMPUTATIONAL-4 | データは、COMPUTATIONAL 項目の SYNCHRONIZED 文節と同様に扱われます。 |
| USAGE COMPUTATIONAL-5 | データは、COMPUTATIONAL 項目の SYNCHRONIZED 文節と同様に扱われます。 |
| DBCS と外部浮動小数点項目 | 各項目が構文チェックされますが、 SYNCHRONIZED 文節の実行には何も影響しません。 |
| REDEFINES 文節 | REDEFINES 文節を含む項目の場合は、再定義される側のデータ項目を、再定義する側のデータ項目と適切に境界の位置合わせをしなければなりません。
例えば、次のように書いた場合、データ項目 A はフルワード境界から開始するようにする必要があります。
02 A PICTURE X(4). 02 B REDEFINES A PICTURE S9(9) BINARY SYNC. |
ファイル・セクションでは、コンパイラーは、SYNCHRONIZED 文節を含むレベル 01 のレコードはすべてバッファー内でダブルワード境界に位置合わせされているものと想定します。 1 ブロックに複数のレコードがあるときは、正しい境界に位置合わせするために、 レコード間に必要なだけ遊びバイトを用意しなければなりません。
作業用ストレージ・セクションでは、 コンパイラーはすべてのレベル 01 の項目をダブルワード境界に位置合わせします。
リンケージ・セクションでは、2 進数項目の位置合わせを行うために、 すべてのレベル 01 の項目はダブルワード境界から始まるものとみなされます。したがって、CALL ステートメントを使用する場合は、 そのステートメントの USING 句の該当のオペランドが、 対応するように位置合わせされている必要があります。