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.