O registro especial LENGTH OF
no COBOL retorna o número de bytes utilizados por um item de dados. Ele é frequentemente utilizado para identificar o tamanho físico de campos e auxiliar em operações como chamadas de subprogramas ou validações de tamanho.
📌 Para que serve
-
Obter o comprimento em bytes de qualquer item de dados.
-
Facilita chamadas para subprogramas (
CALL
) ao passar a quantidade de bytes de um campo. -
Usado em expressões numéricas dentro da Divisão de Procedimentos.
🧾 Sintaxe básica
MOVE LENGTH OF campo TO outro-campo.
DISPLAY LENGTH OF campo.
CALL "PROGRAMA" USING BY CONTENT LENGTH OF campo.
✅ Exemplo prático
01 NOME-COMPLETO PIC X(30).
01 TAMANHO-NOME PIC 9(5) BINARY.
MOVE LENGTH OF NOME-COMPLETO TO TAMANHO-NOME.
DISPLAY "Tamanho do nome: " TAMANHO-NOME.
Resultado:
Tamanho do nome: 30
⚙️ Definição interna
O registro especial LENGTH OF
tem a seguinte definição implícita:
USAGE IS BINARY PICTURE 9(9).
⚠️ Regras importantes
-
Somente disponível na Divisão de Procedimentos.
-
O item de dados não pode estar modificado por referência.
-
Não pode ser usado como:
-
Campo de recebimento de
MOVE
-
Subscrito de uma tabela
-
-
Quando usado com itens do tipo:
-
DISPLAY-1
(DBCS) → Cada caractere ocupa 2 bytes -
NATIONAL
(Unicode UTF-16) → Também 2 bytes por caractere
-
-
É diferente da função LENGTH, que retorna:
-
Número de caracteres, no caso de itens
NATIONAL
-
Mesmo número de bytes, nos demais casos
-
🔄 Diferença entre LENGTH OF
e função LENGTH
Contexto | LENGTH OF |
FUNCTION LENGTH |
---|---|---|
Uso principal | Número de bytes | Número de caracteres (em NATIONAL ) |
Tipo de retorno | PIC 9(9) BINARY | Tipo compatível com o uso do item |
Pode ser usado com | CALL , MOVE , expressões |
Qualquer lugar que aceite uma função |
🧠 Dicas práticas
-
Ao chamar subprogramas, use
BY CONTENT LENGTH OF CAMPO
para passar o tamanho do campo:
CALL "MEU-PROGRAMA" USING BY REFERENCE CAMPO
BY CONTENT LENGTH OF CAMPO.
- Pode ser usado sem subscrito em elementos de tabela:
LENGTH OF CLIENTE-NOME → retorna o tamanho de uma única ocorrência
✅ Conclusão
LENGTH OF
é uma funcionalidade essencial do COBOL moderno que permite trabalhar com tamanhos reais de campos em bytes, de forma clara e segura. Especialmente útil em programas modulares e ao interagir com outras linguagens, seu uso adequado evita erros de alocação, perda de dados e garante a robustez na manipulação de strings e dados binários.