A palavra-chave CORRESPONDING (ou sua forma abreviada CORR) permite que comandos como ADD, SUBTRACT e MOVE operem automaticamente sobre campos de mesmo nome entre dois grupos de dados. Isso reduz a repetição de código e facilita a manipulação de estruturas semelhantes.

📌 Para que serve

  • Realizar operações em grupo de forma automática, entre itens de dados que têm o mesmo nome.

  • Evita múltiplas instruções individuais para cada campo.

  • Pode ser usado com ADD, SUBTRACT e MOVE.

🧾 Sintaxe básica

ADD CORRESPONDING grupo-1 TO grupo-2.
SUBTRACT CORRESPONDING grupo-1 FROM grupo-2.
MOVE CORRESPONDING grupo-1 TO grupo-2.

grupo-1 é o grupo de origem e grupo-2 é o grupo de destino. Apenas campos elementares com mesmo nome serão processados.

✅ Regras de correspondência

Para que os campos correspondam, precisam seguir estas condições:

  • Estarem dentro de grupos (não são campos isolados).

  • Terem o mesmo nome e nível correspondente.

  • Não serem FILLER.

  • Serem compatíveis com a operação (por exemplo, numéricos para ADD/SUBTRACT).

  • Não conterem REDEFINES, RENAMES, OCCURS, nem USAGE POINTER, FUNCTION-POINTER, PROCEDURE-POINTER ou OBJECT REFERENCE.

✍️ Exemplo prático

01 GRUPO-ORIGEM.
   05 VALOR1     PIC 9(5).
   05 VALOR2     PIC 9(5).
   05 TEXTO      PIC X(10).

01 GRUPO-DESTINO.
   05 VALOR1     PIC 9(5).
   05 VALOR2     PIC 9(5).
   05 TEXTO      PIC X(10).

ADD CORRESPONDING GRUPO-ORIGEM TO GRUPO-DESTINO.

Neste exemplo, apenas VALOR1 e VALOR2 serão somados, pois TEXTO não é numérico.

⚠️ Considerações

  • Campos com REDEFINES, INDEX, COMP-1, POINTER, etc. são ignorados.

  • CORRESPONDING é útil para estruturas tabulares com mesmo layout.

  • Pode reduzir código repetitivo, mas exige atenção aos nomes de campos.

  • Em caso de erro de tamanho (ON SIZE ERROR), o tratamento só ocorre após todas as operações individuais serem tentadas.

✅ Conclusão

A cláusula CORRESPONDING é uma excelente forma de simplificar operações com estruturas semelhantes no COBOL. Quando usada corretamente, aumenta a produtividade, melhora a legibilidade do código e reduz o risco de erros ao evitar repetição desnecessária de instruções.