Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


SYNCHRONIZED 節

SYNCHRONIZED 節は、ストレージ内の自然境界に基本項目の位置合わせを行うように指定します。

構文図を読む構文図をスキップする
フォーマット 

>>-+-SYNCHRONIZED-+--+-------+---------------------------------><
   '-SYNC---------'  +-LEFT--+   
                     '-RIGHT-'   

SYNC は、SYNCHRONIZED の省略形で意味は同じです。

SYNCHRONIZED 節は必須ではありませんが、 算術演算に使用される 2 進数項目に対してシステムによってはパフォーマンスが向上します。

SYNCHRONIZED 節は、基本項目に対して、またはレベル 01 グループ項目に対して指定できます。その場合、そのグループ項目内のすべての基本項目が同期化されます。

LEFT
これは、基本項目が配置されるシステム設定の境界の左文字位置から開始するように、基本項目を位置付けることを指定します。
RIGHT
これは、基本項目がシステム設定境界に配置される際に、システム設定境界の右文字位置で終わるように、その基本項目を位置付けることを指定します。

LEFT 句と RIGHT 句が指定されたときは、構文チェックが行われますが、それはプログラムの実行に何も影響しません。

基本項目の長さは、SYNCHRONIZED 節を指定しても変化することはありません。

以下の図に、SYNCHRONIZE 節が他の言語エレメントに与える影響を示します。

表 1. SYNCHRONIZE 節が他の言語エレメントに与える影響
言語エレメント コメント
OCCURS 節 OCCURS 節のスコープ内の項目について指定すると、 その項目の各オカレンスが同期化されます。
USAGE DISPLAY または PACKED-DECIMAL 各項目が構文チェックされますが、 SYNCHRONIZED 節の実行には何も影響しません。
USAGE NATIONAL 各項目が構文チェックされますが、 SYNCHRONIZED 節の実行には何も影響しません。
USAGE BINARY または COMPUTATIONAL REDEFINES 節を含む項目の従属基本項目のうち最初のものについて指定した場合は、その項目に未使用の文字位置を追加する必要はまったくありません。

SYNCHRONIZED 節が、従属データ項目 (レベル番号が 02 から 49 のデータ項目) に対して指定されていないときは、 位置合わせに関して次の点を考慮する必要があります。

  • その項目は、USAGE が BINARY であり、PICTURE が S9 から S9(4) の範囲にあれば、 レコード開始に関連して 2 の倍数の変位に位置合わせされます。
  • USAGE が BINARY であり、PICTURE が S9(5) から S9(18) の範囲にある場合、または USAGE が INDEX であれば、 その項目はレコードの先頭を基準にして 4 の倍数の変位に位置合わせされます。

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 句の該当のオペランドが、 対応するように位置合わせされている必要があります。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)