COBOL - Funções intrínsecas - Exemplos - www.cadcobol.com.br


Volta a página anterior

Volta ao Menu Principal


Tradução e layout desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

UPPER-CASE & LOWER-CASE FUNCTIONS

Se você quiser comparar dois campos e não tiver certeza de qual caso os campos contêm, você pode verificar a versão maiúscula de ambos os campos ou a versão em minúscula de ambos os campos para que você esteja comparando como configurações.

   IF  FUNCTION UPPER-CASE(FLD1) = FUNCTION UPPER-CASE(FLD2)
       PERFORM B-300-MATCH-ROUT.

   IF  FUNCTION LOWER-CASE(FLD1) = FUNCTION LOWER-CASE(FLD2)
       PERFORM B-300-MATCH-ROUT.

Se você estiver preocupado com a possibilidade de um usuário inserir dados incorretamente na tela, poderá convertê-los usando essa função.

   MOVE FUNCTION UPPER-CASE(STATE-IN) TO STATE-FOR-FILE.

LENGTH FUNCTION

A função length obtém o tamanho dos campos não numéricos para que você possa descobrir o comprimento do campo.

   COMPUTE LEN1 = FUNCTION LENGTH(FLD-IN).

REVERSE FUNCTION

Se você precisar inverter os dados em um campo, poderá usar a função REVERSE.
Isso significa que, se os dados foram inseridos como XYZ, o novo campo será agora ZYX.

   MOVE FUNCTION REVERSE(FLDA) TO FLDB.

SUM, MAX, MIN FUNCTION

Receberá a sum (soma), max (valor maximo) ou min (valor minimo) dos argumentos entre parênteses.

   COMPUTE TOTAL-WS = FUNCTION SUM(FLDA FLDB FLDC FLDD).

   COMPUTE MAX-WS   = FUNCTION MAX(FLDA FLDB FLDC FLDD).

   COMPUTE MIN-WS   = FUNCTION MIN(FLDA FLDB FLDC FLDD).

CONVERT TO NUMERIC FUNCTION

Isso converterá um campo editado em um numérico para uso em um cálculo.
O ANS-WS conterá 2367886 com um ponto decimal assumido entre os dois 8s.
Seu PIC seria S9(5)V99.
Observe que isso deve ser feito como uma conversão matemática antes de uma instrução MOVE, isso não deve ser feito no MOVE etc.

   COMPUTE ANS-WS = FUNCTION NUMVAL-C("$23,678.86 CR").

Se você quiser apenas converter um campo alfanumérico em numérico, você usaria NUMVAL.

   COMPUTE ANS-WS = FUNCTION NUMVAL(FLDX).

Se você tivesse uma tabela de dados numéricos e quisesse somar esses dados ou encontrar o valor máximo nesses dados, você pode fazer isso com a função e, em vez disso, de usar um subscrito para percorrer a tabela, você pode simplesmente codificar TODOS.

   COMPUTE MAX-AMT-WS = FUNCTION MAX(NUM-TABLE(ALL)).

   COMPUTE TOT-AMT-WS = FUNCTION SUM(NUM-TABLE(ALL)).

INTEGER FUNCTIONS

Isso levará o número inteiro e o atribuirá ao INT-ANS-WS.
Obviamente, você poderia ter um nome de campo entre parênteses.
Se o decimal for maior que 5, ele será arredondado.
Se você quiser truncar, use INTEGER-PART.

   COMPUTE INT-ANS-WS = FUNCTION INTEGER(2123.456).     Retornara 2123

   COMPUTE INT-ANS-WS = FUNCTION INTEGER(45.7).         Retornara 46

   COMPUTE INT-ANS-WS = FUNCTION INTEGER-PART(123.456). Retornara 123

   COMPUTE INT-ANS-WS = FUNCTION INTEGER-PART(63.78).   Retornara 63

REMAINDER VALUE FUNCTION
   COMPUTE REM-WS = FUNCTION REM(42,5). retorna 2, pois 42 dividido por 5 tem um resto de 2.

DATE, TIME FUNCTIONS

Você precisa observar que as funções de data usam o calendário gregoriano, o que significa que 1º de janeiro de 1601 é o dia 1 do calendário.
FUNCTION CURRENT-DATE irá obter os dados atuais e retorná-los como um campo que leva 21 caracteres - PIC X(21).

O formato eh yyyymmddhhmmsstt+hhmm.

Note que ele é centésimos de segundos e o hhmm no final é a relação com o Tempo Médio de Greenwich.

FUNCTION DATE-OF-INTEGER (Data gregoriana em dias) retornará yyyymmdd enquanto FUNCTION DAY-OF-INTEGER (Data gregoriana em dias) retornara yyyyddd - os dias aqui estão em Juliano variando de 1 a 366.

FUNCTION INTEGER-OF-DATE(date as yyyymmdd) retornará a data gregoriana.

FUNCTION DATE-TO-YYYYMMDD(date,n) irá converter uma data para um ano de quatro dígitos.

A data é dada em YYMMDD e o n é um inteiro que define o final do ano do intervalo de 100 anos relevante em relação à data atual.

A maneira que eu entendo isso é que desde que estamos em 2000, fazendo n 15 significaria que a data está no intervalo de cem anos que termina em 2015.

Você deve ler sobre isso, se você nunca usá-lo!
FUNCTION YEAR-TO-YYYY funciona da mesma maneira, mas apenas com anos