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
GIVING
ouOUTPUT 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
SORT
cria uma área temporária de ordenação (definida porSD
) e carrega registros dos arquivos definidos emUSING
ou viaRELEASE
. -
Os dados são ordenados com base nos campos definidos em
ASCENDING KEY
ouDESCENDING 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 entradaSD
naDATA DIVISION
. -
Campos definidos como
KEY
não podem terOCCURS
, nem ser do tipoNATIONAL
com ponto flutuante. -
Os arquivos em
USING
eGIVING
nã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
,RELEASE
ouRETURN
.
🧠 Dicas práticas
-
Para registros duplicados, use
WITH DUPLICATES IN ORDER
para preservar a ordem original. -
Use
COLLATING SEQUENCE
se for necessário alterar a ordem de agrupamento padrão (ex: EBCDIC para ASCII). -
INPUT PROCEDURE
eOUTPUT PROCEDURE
sã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.