Die CORRESPONDING-Angabe ermöglicht es dem Anwender, mit einer Anweisung Operationen auf verschiedene Datenelemente gleichen Namens in verschiedenen Datengruppen auszuführen.
CORR ist die Abkürzung von CORRESPONDING.
Alle Bezeichner müssen sich auf Datengruppen beziehen. Bezieht sich ein Bezeichner auf eine nationale Datengruppe, so wird diese nicht wie ein Datenelement verarbeitet, sondern wie eine Gruppe.
Paare von Datenfeldern entsprechen sich, wenn die nachstehend beschriebenen Bedingungen erfüllt sind; alle anderen Datenfelder werden bei der Operation nicht berücksichtigt.
Beide Datenfelder haben den gleichen Namen und gleiche Qualifizierung, bis zu, aber nicht unbedingt einschließlich, bezeichner-1 und bezeichner-2.
Keines der Datenfelder ist mit FILLER erklärt.
Mindestens eines der Datenfelder ist im Falle von MOVE CORRESPONDING ein Datenelement und die daraus resultierende MOVE-Anweisung ist gültig entsprechend den Regeln der MOVE-Anweisung; beide Datenfelder sind Datenelemente im Falle von ADD CORRESPONDING oder SUBTRACT CORRESPONDING.
Ein Datenfeld, das bezeichner-1 oder bezeichner-2 untergeordnet ist und das mit einer REDEFINES-Klausel, RENAMES-Klausel, OCCURS-Klausel, USAGE IS INDEX-Klausel definiert oder von der Klasse objekt oder der Klasse zeiger ist, wird ignoriert; alle Felder, die diesen Feldern untergeordnet sind, werden ebenfalls ignoriert. bezeichner1 oder bezeichner-2 können jedoch mit REDEFINES-Klauseln oder OCCURS-Klauseln definiert werden oder Datenfeldern untergeordnet sein, die mit REDEFINES-Klauseln oder OCCURS-Klauseln definiert sind.
Auf Bezeichner, die einer Teilfeldselektion unterzogen werden, kann die CORRESPONDING-Angabe nicht angewendet werden.
Beispiel 8-16
In diesem Beispiel werden Datenelemente in ARBEITER-SATZ von entsprechenden Feldern in LOHN-KONTROLLE abgezogen.
Anweisung in der PROCEDURE DIVISION:
SUBTRACT CORRESPONDING ARBEITER-SATZ FROM LOHN-KONTROLLE.
Einträge in der DATA DIVISION: |
|
01 ARBEITER-SATZ. 02 ARBEITER-NR. 03 ARBEITS-ORT... 03 STECHUHR-NR. 04 SCHICHT-KENNZAHL... 04 KONTROLL-NR... 02 LOHN. 03 ARBEITSSTUNDEN... 03 AUSZAHLUNG... 02 STEUER-SATZ... 02 ABZUEGE... |
01 LOHN-KONTROLLE. 02 ARBEITER-NR. 03 STECHUHR-NR... 03 FILLER... 02 ABZUEGE. 03 STEUER-SATZ... 03 STEUER-BETRAG... 03 VORSCHUSS... 02 LOHN. 03 ARBEITSSTUNDEN... 03 AUSZAHLUNG... 02 NETTO-ZAHLUNG... 02 ARBEITER-NAME. 03 SCHICHT-KENNZAHL... |
Entsprechend den Regeln für die CORRESPONDING-Angabe finden folgende Subtraktionen statt:
1. Operand |
2. Operand |
|
|
|
|
Die folgenden Felder werden aus den aufgeführten Gründen nicht subtrahiert.
Feld |
Begründung |
|
Feld ist in keiner der beiden Gruppen ein Element |
|
Name kommt nicht in LOHN-KONTROLLE vor |
|
Feld ist in einer Gruppe kein Element |
|
Qualifizierung ist nicht identisch in LOHN-KONTROLLE |
|
Name kommt in LOHN-KONTROLLE nicht vor |
|
Name ist in keiner der beiden Gruppen ein Element |
|
Qualifizierung ist nicht identisch inLOHN-KONTROLLE |
|
Feld ist in einer Gruppe kein Element |