COBOL - Funções intrínsecas - ULENGTH



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Funções intrínsecas - ULENGTH
Intrinsic functions - Enterprise COBOL for z/OS 6.3.0

A função ULENGTH retorna um valor inteiro igual ao número de caracteres UTF-8 ou UTF-16 em um argumento de item de dados de caracteres que contém dados UTF-8 ou UTF-16.

O tipo de função é inteiro.

argument-1
Deve ser da classe alfabética, alfanumérica, nacional ou UTF-8.
O argument-1 deve conter caracteres codificados UTF-8 ou UTF-16 válidos:
  • Se o argumento-1 for da classe alfabética, alfanumérica ou UTF-8, ele deverá conter dados UTF-8 válidos.
  • Se o argumento 1 for da classe nacional, ele deverá conter dados UTF-16 válidos.

O valor retornado é o número de caracteres UTF-8 ou UTF-16 no argumento 1.
Se LP (32) estiver em vigor, o valor retornado será um número inteiro de 9 dígitos; se LP (64) estiver em vigor, o valor retornado será um número inteiro de 18 dígitos.

Exemplo 1

Se o argumento 1 for um item codificado em UTF-8 e o argumento UTF-8 contiver caracteres compostos, os caracteres combinados serão contados individualmente na determinação do comprimento.
Por exemplo, quando codificado em UTF-8, o caractere Unicode ä pode ser x'C3A4 'ou x'61CC88'.
Com um dos caracteres UTF-8 como argumento-1, os valores retornados da função ULENGTH são diferentes.

Veja a tabela a seguir para detalhes.

Tabela 1. Função ULENGTH do caractere ä

Caracter Codificação Unicode Codificação UTF-8 Valor retornado da função ULENGTH
ä U+00E4(precomposed form,
latin small letter a with diaeresis)
x'C3A4' 1
U+0061 + U+0308(canonical decomposition,
latin small letter a + combining diaeresis)
x'61CC88' 2

Exemplo 2

Se o argument-1 for um item de dados nacional que contém dados UTF-16 e o argument-1 contiver pares substitutos, cada par de substitutos baixos e altos será contado como um caractere UTF-16.
Por exemplo, se B é um item nacional que contém o valor UTF-16 x'005400F6006200750072D858DC6B0073 '(' Töber ?? s '), o valor retornado de ULENGTH (B) será 7.
Caractere? = X'D858DC6B 'é contado como um caractere UTF-16.



© Copyright IBM Corp.