COBOL - Funções intrínsecas - USUPPLEMENTARY



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

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

A função USUPPLEMENTARY retorna um valor inteiro igual ao índice do primeiro caractere suplementar Unicode em um argumento de item de dados de caracteres codificado em UTF-8 ou UTF-16.

Um caractere suplementar Unicode é um caractere acima de U + FFFF, ou seja, um caractere fora do Plano Multilíngue Básico (BMP).
Esses caracteres são codificados em UTF-16 com um par substituto (duas unidades de código de 16 bits) ou são codificados em UTF-8 com uma representação de 4 bytes.

O tipo de função é inteiro.

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

O valor retornado é um número inteiro, que difere com base no valor do argumento 1 e tem 9 dígitos se LP (32) estiver em vigor ou 18 dígitos se LP (64) estiver em vigor:,/P.

  • Se o conteúdo do argument-1 não for Unicode válido (UTF-8 ou UTF-16, dependendo da classe), o resultado retornado será imprevisível.
  • Se o argument-1 não contiver caracteres suplementares, o valor retornado será zero.
  • Se o argument-1 for da classe alfabética ou alfanumérica, o valor retornado será a posição de byte do primeiro caractere suplementar UTF-8 no argumento 1.
  • Se o argument-1 for da classe nacional, o valor retornado será o índice, em unidades de codificação UTF-16, do primeiro caractere complementar UTF-16 no argument-1.

Exemplo 1

Por exemplo, o símbolo da clave de sol musical é representado no Unicode UTF-16 pelo par substituto nx'D834DD1E 'ou no Unicode UTF-8 por x'F09D849E'.
Portanto, para o seguinte fragmento de programa COBOL, a saída de ambas as instruções DISPLAY é o valor 3.


       01  N PIC N(4) VALUE NX'00200020D834DD1E'.
       01  X PIC X(6) VALUE X'2020F09D849E'.
       01  I PIC 9.
       ...
           COMPUTE I = FUNCTION USUPPLEMENTARY(N)
           DISPLAY I
           COMPUTE I = FUNCTION USUPPLEMENTARY(X)
           DISPLAY I

Exemplo 2

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

Veja a tabela a seguir para detalhes.

Valores Retornados da Função USUPPLEMENTARY

argument-1 Codificação Unicode Codificação UTF-8 Valores retornados da função USUPPLEMENTARY
B = ä?? K U+00E4 + U21DE4 + U+004B (forma pré-composta,
letra minúscula latina a com diérese + letra maiúscula latina K)
x'C3A4F0A1B7A44B' (ä??K) USUPPLEMENTARY (B) retorna 3
U+0061 + U+0308 + U21DE4 + U+004B (decomposição canônica,
letra minúscula latina a + diátese combinada + letra maiúscula latina K)
x'61CC88F0A1B7A44B' (ä??K) USUPPLEMENTARY (B) retorna 4


© Copyright IBM Corp.