A instrução SORT no COBOL é utilizada para classificar registros de arquivos ou registros liberados por um procedimento, com base em uma ou mais chaves definidas. Após a ordenação, os registros podem ser processados por um procedimento de saída ou gravados diretamente em arquivos.
📌 Para que serve
-
Classificar registros de arquivos sequenciais conforme campos-chave definidos.
-
Reorganizar dados para facilitar a geração de relatórios ou processamento posterior.
-
Processar registros ordenados via
GIVINGouOUTPUT PROCEDURE.
🧾 Sintaxe básica
SORT nome-arquivo-sd
ON ASCENDING/DESCENDING KEY chave-1 chave-2 ...
USING arquivo-entrada-1 arquivo-entrada-2 ...
GIVING arquivo-saida-1 arquivo-saida-2 ...
Ou com procedimentos:
SORT nome-arquivo-sd
ON ASCENDING KEY chave
INPUT PROCEDURE IS entrada-thru
OUTPUT PROCEDURE IS saida-thru
✅ Exemplo prático
SD ARQ-ORDENADO.
01 REG-ORDENADO.
05 CODIGO PIC 9(4).
05 NOME PIC X(20).
FD ARQ-ENTRADA.
01 REG-ENTRADA.
05 CODIGO PIC 9(4).
05 NOME PIC X(20).
FD ARQ-SAIDA.
01 REG-SAIDA.
05 CODIGO PIC 9(4).
05 NOME PIC X(20).
PROCEDURE DIVISION.
SORT ARQ-ORDENADO
ON ASCENDING KEY CODIGO
USING ARQ-ENTRADA
GIVING ARQ-SAIDA.
⚙️ Como funciona internamente
-
O
SORTcria uma área temporária de ordenação (definida porSD) e carrega registros dos arquivos definidos emUSINGou viaRELEASE. -
Os dados são ordenados com base nos campos definidos em
ASCENDING KEYouDESCENDING KEY. -
Após a ordenação:
-
Com
GIVING: os registros são automaticamente gravados nos arquivos de saída. -
Com
OUTPUT PROCEDURE: os registros são acessados um a um viaRETURN.
-
⚠️ Regras importantes
-
file-name-1(na cláusulaSORT) deve ser um arquivo especial com entradaSDnaDATA DIVISION. -
Campos definidos como
KEYnão podem terOCCURS, nem ser do tipoNATIONALcom ponto flutuante. -
Os arquivos em
USINGeGIVINGnão devem estar abertos no momento doSORT. -
A sequência de agrupamento (
COLLATING SEQUENCE) pode ser personalizada comEBCDIC,ASCII, etc. -
Procedimentos de entrada (
INPUT PROCEDURE) e saída (OUTPUT PROCEDURE) não podem usarSORT,MERGE,RELEASEouRETURN.
🧠 Dicas práticas
-
Para registros duplicados, use
WITH DUPLICATES IN ORDERpara preservar a ordem original. -
Use
COLLATING SEQUENCEse for necessário alterar a ordem de agrupamento padrão (ex: EBCDIC para ASCII). -
INPUT PROCEDUREeOUTPUT PROCEDUREsão ideais para lógica de pré e pós-processamento sem criar arquivos intermediários. -
Ideal para reorganizar grandes volumes de dados de forma performática.
✅ Conclusão
A instrução SORT é uma poderosa ferramenta do COBOL que facilita o trabalho com dados organizados. Permite agrupar, classificar e preparar registros para relatórios ou outras rotinas com grande flexibilidade e eficiência. Saber utilizar corretamente as cláusulas USING, GIVING, KEY, COLLATING SEQUENCE e os procedimentos auxiliares amplia significativamente o poder da linguagem no processamento de dados em batch.