5.1.4 CORRESPONDING指定
CORRESPONDING指定は,ADD文,SUBTRACT文,およびMOVE文で使用します。
CORRESPONDING指定については,マニュアル「COBOL2002 言語 標準仕様編」 「10.6.5 CORRESPONDING指定」を参照してください。
CORRESPONDING指定をすると,一つの文で集団項目中の幾つもの「対応する」項目間の加減算や転記ができます。
CORRESPONDINGを指定したMOVE文,ADD文,またはSUBTRACT文で,対応する項目が一つもない場合は,転記が行われません。
対応とは,D1とD2をそれぞれ集団項目の一意名とするときに,D1とD2から一つずつとったデータ項目の組が,次の条件を満たす場合を指します。
-
D1に従属するデータ項目とD2に従属するデータ項目にFILLER以外の同じデータ名があり,D1とD2の直前までの修飾語の名前の系列が同じである。
-
CORRESPONDING指定付きのMOVE文では,そのデータ項目の少なくとも一つは基本項目であり,結果的に行われる転記は転記の規則に従って正しいものである。
CORRESPONDING指定付きのADD文またはSUBTRACT文では,そのデータ項目の両方が基本数字データ項目である。
-
D1およびD2の記述は,レベル番号66,77,88,または用途が指標,オブジェクトを含んでいてはならない。
-
D1またはD2に従属するデータ項目が,REDEFINES句,RENAMES句,OCCURS句,または用途が指標,オブジェクトを含むとき,そのデータ項目は対応の対象とはならない。また,REDEFINES句,OCCURS句,または用途が指標,オブジェクトを含むデータ項目に従属するときも,対応の対象とはならない。D1およびD2は,どちらも部分参照されてはならない。
-
上記の条件を満足する各データ項目の名前は,暗黙の修飾語の結果,一意にならなければならない。
対応する項目の例を,次に示します。
- (例1)
-
-
D1同士とF1同士は対応します。
-
H1は一方が基本項目で他方が集団項目ですが,MOVE文では,基本項目から集団項目への転記ができるので対応しています。ただし,ADD文およびSUBTRACT文では基本項目でなければならないので,対応しません。
-
B1,C1は集団項目なので対応しません。
-
E1は修飾語の系列が異なる(E1 OF C1 OF B1とE1 OF C1 OF H1)ので対応しません。
つまり,(A)は(B)と同じことになります。
- (A)
MOVE CORRESPONDING X TO Z
- (B)
MOVE D1 OF C1 OF B1 OF X TO D1 OF C1 OF B1 OF Z MOVE F1 OF C1 OF B1 OF X TO F1 OF C1 OF B1 OF Z MOVE H1 OF X TO H1 OF Z
-
- (例2)
-
-
A1とE1は対応します。
-
B1はOCCURS句を含む項目,C1,D1はOCCURS句を含む項目に従属する項目なので,対応しません。
-
F1はREDEFINES句を含む項目なので対応しません。
つまり,(A)は(B)と同じことになります。
- (A)
MOVE CORRESPONDING Y TO Z
- (B)
MOVE A1 OF Y TO A1 OF Z MOVE E1 OF Y TO E1 OF Z
-