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
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.