CORRESPONDING (CORR) faz com que as operações ADD, SUBTRACT e MOVE sejam executadas em itens de dados elementares do mesmo nome se o item de grupo alfanumérico ou o item de grupo nacional ao qual eles pertencem for especificado. Um grupo nacional é processado como um item de grupo quando a frase CORRESPONDING é usada.
Ambos os identificadores que seguem a palavra-chave CORRESPONDING devem nomear os itens de grupo. Nesta discussão, estes identificadores são referidos como identifier-1 e identifier-2. identifier-1 faz referência ao item do grupo de envio. identifier-2 faz referência ao item do grupo de recepção.
Dois itens de dados subordinados, um de identifier-1 e um do identifier-2, correspondem se as seguintes condições forem verdadeiras:
- Em uma declaração ADD ou SUBTRACT, ambos os itens de dados são elementar itens de dados numéricos. Outros itens de dados são ignorados.
- Em uma instrução MOVE, pelo menos um dos itens de dados é um item elementar, e o movimento é permitido pelas regras de movimento.
- Os dois itens subordinados têm o mesmo nome e as mesmas eliminatórias até, mas não incluindo identifier-1 e identifier-2.
- Os itens subordinados não são identificados pela palavra-chave FILLER.
- Nem identifier-1 nem o identifier-2 é descrita como um nível 66, 77, 88 ou item, e também não é descrito como um elemento de dados de índice. Nem identifier-1 nem identifier-2 pode ser modificado por referência.
- Nem identifier-1 nem identifier-2 é descrito com USAGE POINTER, USAGE FUNCTION-POINTER, USAGE PROCEDURE-POINTER, ou USAGE OBJECT REFERENCE.
- Os itens subordinados não incluem um REDEFINES, RENAMES, OCCURS, USAGE INDEX, USAGE POINTER, USAGE PROCEDURE-POINTER, USAGE FUNCTION-POINTER, ou USAGE OBJECT REFERENCE nas suas descrições.
No entanto, identifier-1 e identifier-2 em si podem conter ou estar subordinada a itens que contêm uma REDEFINES ou OCCURS cláusula em suas descrições.
- O nome de cada item de dados subordinado que satisfaz essas condições é único após a aplicação de qualificadores implícitos.
identifier-1, identifier-2, ou ambos pode ser subordinado a um item de enchimento.
Por exemplo, considere duas hierarquias de dados definidas da seguinte forma:
05 ITEM-1 OCCURS 6. 10 ITEM-A PIC S9(3). 10 ITEM-B PIC +99.9. 10 ITEM-C PIC X(4). 10 ITEM-D REDEFINES ITEM-C PIC 9(4). 10 ITEM-E USAGE COMP-1. 10 ITEM-F USAGE INDEX. 05 ITEM-2. 10 ITEM-A PIC 99. 10 ITEM-B PIC +9V9. 10 ITEM-C PIC A(4). 10 ITEM-D PIC 9(4). 10 ITEM-E PIC 9(9) USAGE COMP. 10 ITEM-F USAGE INDEX.
Se ADD CORR ITEM-2 TO ITEM-1(x) for especificado, ITEM-A e ITEM-A (x), ITEM-B e (x) ITEM-B, e ITEM-E e ITEM-E (x) são consideradas correspondentes e são somadas. ITEM-C e ITEM-C (x) não estão incluídos porque eles não são numéricos. ITEM-D e ITEM-D (x) não estão incluídos porque ITEM-D (x) inclui uma cláusula redefine em sua descrição de dados. ITEM-F e ITEM-F (x) não estão incluídos porque eles são itens de dados de índice. Note-se que ITEM-1 é válido tanto como identificador-1 ou identificador-2 .
Se qualquer uma das operações individuais na ADD CORRESPONDENTE declaração produz uma condição de erro de tamanho, imperative-statement-1 na ON SIZE ERROR não é executada até que todas as adições individuais estão concluídas.