Domingo 19 Mai 2024

O registro especial LENGTH OF contém o número de bytes usados ​​por um item de dados.

LENGTH OF cria um registro especial implícito que contém o comprimento de byte atual do item de dados referenciado pelo identificador.

Para itens de dados descritos com o uso DISPLAY-1 (itens de dados DBCS) e itens de dados descritos com uso NATIONAL, cada caractere ocupa 2 bytes de armazenamento.

LENGTH OF pode ser usado na divisão de procedimento em qualquer lugar um item de dados numéricos que tenha a mesma definição que a definição implícita do LENGTH of registro especial pode ser usado. O LENGTH OF registro especial tem a definição implícita:

USAGE IS BINARY PICTURE 9(9).

Se o item de dados referenciado pelo identificador contém a cláusula GLOBAL, o LENGTH OF registro especial é um item de dados global.

O registro especial LENGTH OF pode aparecer dentro da posição de caracter inicial ou as expressões de comprimento de uma especificação de modificação de referência. No entanto, o registro especial LENGTH OF não pode ser aplicado a qualquer operando modificado por referência.

O operando LENGTH OF não pode ser uma função, mas o LENGTH OF registro especial é permitido em uma função onde um argumento inteiro é permitido.

Se o LENGTH OF registro especial é usado como o argumento para a função LENGTH, o resultado é sempre 4, independente do argumento especificado para LENGTH OF.

Se o registo especial ADDRESS OF é utilizado como o argumento para o registo especial LENGTH, o resultado é sempre 4, independentemente do argumento especificado para ADDRESS OF.

LENGTH OF não pode ser um dos seguintes:

  • Um item de dados de recebimento
  • Um subíndice

Quando o registro especial LENGTH OF é usado como um parâmetro em uma instrução CALL, ele deve ser passado BY CONTENT ou BY VALUE.

Quando um elemento de tabela é especificado, o registro especial LENGTH OF contém o comprimento em bytes de uma ocorrência. Quando se refere a um elemento de tabela, o nome do elemento não precisa ser subscrito.

Um valor é retornado para qualquer identificador cujo comprimento pode ser determinado, mesmo se a área referenciada pelo identificador não estiver atualmente disponível para o programa.

Existe um registro especial LENGTH OF especial para cada identificador referenciado com a frase LENGTH OF. Por exemplo:

MOVE LENGTH OF A TO B
DISPLAY LENGTH OF A, A
ADD LENGTH OF A TO B
CALL "PROGX" USING BY REFERENCE A BY CONTENT LENGTH OF A

A função intrínseca LENGTH também pode ser usada para obter o comprimento de um item de dados. Para itens de dados de uso NACIONAL , o comprimento retornado pela função comprimento é o número de posições de caracteres nacionais, em vez de bytes; assim, o comprimento do registro especial e a função intrínseca COMPRIMENTO tem resultados diferentes para itens de uso de dados nacional . Para todos os outros itens de dados, o resultado é o mesmo.