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,SUBTRACTeMOVE.
🧾 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 egrupo-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, nemUSAGE POINTER,FUNCTION-POINTER,PROCEDURE-POINTERouOBJECT 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.