Translate

domingo, 18 de setembro de 2022

Funções Intrínsecas no Enterprise COBOL : O Superpoder Escondido da Linguagem que Todo Programador COBOL Padawan Deveria Conhecer

 

Bellacosa Mainframe e as funcoes intrinsecas no cobol

☕ Um Café no Bellacosa Mainframe

Funções Intrínsecas no Enterprise COBOL

O Superpoder Escondido da Linguagem que Todo Programador COBOL Padawan Deveria Conhecer

"Existe um momento na vida de todo Programador COBOL em que ele percebe que passou anos escrevendo dezenas de linhas de código para resolver problemas que poderiam ser solucionados com apenas uma única função. Esse momento normalmente vem quando ele descobre as Funções Intrínsecas do Enterprise COBOL."


Introdução

Todo Programador COBOL começa aprendendo praticamente o mesmo conjunto de comandos:

  • MOVE

  • ADD

  • SUBTRACT

  • MULTIPLY

  • DIVIDE

  • IF

  • EVALUATE

  • PERFORM

Com eles já é possível desenvolver sistemas inteiros.

Durante muitos anos isso foi suficiente.

Entretanto, conforme os sistemas ficaram mais sofisticados, surgiu um problema.

Como calcular uma data futura?

Como descobrir o tamanho de um texto?

Como converter letras para maiúsculas?

Como obter o ano atual?

Como calcular valor absoluto?

Como descobrir o maior número entre vários?

Como manipular datas sem escrever centenas de linhas de código?

Foi justamente para resolver essas necessidades que surgiram as Funções Intrínsecas (Intrinsic Functions).

Elas representam uma das maiores evoluções da linguagem COBOL moderna.


O que são Funções Intrínsecas?

Podemos imaginar as Funções Intrínsecas como pequenas ferramentas prontas, fornecidas pelo próprio compilador.

Ao invés de escrevermos toda a lógica...

Apenas chamamos uma função.

Exemplo.

Ao invés de fazer:

Receba a data

↓

Separe dia

↓

Separe mês

↓

Separe ano

↓

Valide

↓

Calcule

Podemos simplesmente escrever:

FUNCTION CURRENT-DATE

O compilador faz todo o trabalho.


Por que elas existem?

Imagine que cem empresas precisem calcular o valor absoluto de um número.

Sem funções.

Cada equipe escreveria um algoritmo diferente.

Com funções.

Todos utilizam exatamente a mesma implementação.

Mais simples.

Mais segura.

Mais rápida.

Mais padronizada.


Como reconhecer uma Função Intrínseca?

Todas começam com a palavra:

FUNCTION

Por exemplo.

MOVE FUNCTION UPPER-CASE(WS-NOME)
    TO WS-NOME

Ou.

COMPUTE WS-IDADE =
        FUNCTION INTEGER(WS-VALOR)

Sempre que enxergar FUNCTION, provavelmente estará utilizando uma Função Intrínseca.


Os grandes grupos de funções

Embora existam dezenas de funções disponíveis no Enterprise COBOL, podemos agrupá-las em algumas categorias principais.

  • Funções Matemáticas

  • Funções Estatísticas

  • Funções de Texto

  • Funções de Datas

  • Funções Financeiras

  • Funções de Conversão

  • Funções Numéricas

  • Funções de Internacionalização

  • Funções de Manipulação de Caracteres

Organizar mentalmente essas categorias facilita muito a escolha da função adequada.


1. Funções Matemáticas

São utilizadas para cálculos.

Algumas das mais conhecidas:

  • ABS

  • SQRT

  • INTEGER

  • INTEGER-PART

  • FRACTION-PART

  • REM

  • MOD

  • EXP

  • LOG

  • LOG10


ABS

Valor absoluto.

-50

↓

50

Exemplo.

COMPUTE WS-VALOR =
        FUNCTION ABS(WS-NUMERO)

Muito útil quando não importa o sinal.


SQRT

Raiz quadrada.

81

↓

9

Sem precisar implementar Newton-Raphson ou outro algoritmo matemático.


INTEGER

Remove a parte decimal.

123.98

↓

123

Muito usado em cálculos financeiros.


2. Funções de Texto

Uma das categorias mais utilizadas.

Inclui funções como:

  • UPPER-CASE

  • LOWER-CASE

  • REVERSE

  • LENGTH

  • TRIM


UPPER-CASE

Imagine.

Bellacosa Mainframe

Resultado.

BELLACOSA MAINFRAME

Código.

MOVE FUNCTION UPPER-CASE(WS-NOME)
    TO WS-NOME

Excelente para padronização.


LOWER-CASE

O inverso.

IBM MAINFRAME

↓

ibm mainframe

LENGTH

Retorna o tamanho do dado.

COBOL

↓

5

Sem precisar contar caracteres manualmente.


TRIM

Remove espaços desnecessários.

Muito útil antes de comparar textos ou montar mensagens.


3. Funções de Datas

Provavelmente as mais importantes no ambiente corporativo.

Imagine calcular datas manualmente.

Teríamos que considerar:

  • anos bissextos;

  • meses com 28, 29, 30 ou 31 dias;

  • calendário gregoriano;

  • mudança de século.

As funções fazem isso automaticamente.


CURRENT-DATE

Obtém data e hora do sistema.

MOVE FUNCTION CURRENT-DATE
    TO WS-DATA

Retorna informações como:

  • ano;

  • mês;

  • dia;

  • hora;

  • minuto;

  • segundo;

  • frações de segundo.

É muito utilizada para auditoria, logs, trilhas de execução e identificação de transações.


INTEGER-OF-DATE

Transforma uma data em um número inteiro.

Isso facilita cálculos de diferença entre datas.


DATE-OF-INTEGER

Faz exatamente o contrário.


4. Funções Estatísticas

Pouca gente lembra delas.

Mas existem.

Exemplos.

  • MAX

  • MIN

  • MEAN

  • MEDIAN

Imagine.

12

40

9

18

Maior valor.

FUNCTION MAX(...)

Menor valor.

FUNCTION MIN(...)

Muito útil em processamento analítico.


5. Funções Financeiras

O Enterprise COBOL também oferece funções voltadas para cálculos financeiros.

Dependendo da versão do compilador e do ambiente, é possível utilizar funções relacionadas a juros, amortização e cálculos financeiros padronizados.

Embora nem todas sejam amplamente utilizadas em aplicações corporativas modernas, é importante conhecer sua existência, principalmente em projetos legados ou ambientes específicos.


6. Conversões

Outra categoria extremamente útil.

Imagine receber um número com casas decimais.

1234.987

Desejamos apenas.

1234

Basta.

FUNCTION INTEGER(...)

Sem escrever dezenas de IFs.


Um exemplo passo a passo

Imagine um cadastro.

Nome

João da Silva

Precisamos:

  • remover espaços;

  • converter para maiúsculas;

  • descobrir tamanho.

Passo 1.

FUNCTION TRIM(...)

Resultado.

João da Silva

Sem espaços extras.


Passo 2.

FUNCTION UPPER-CASE(...)

Resultado.

JOÃO DA SILVA

Passo 3.

FUNCTION LENGTH(...)

Resultado.

14

Perceba.

Cada função resolve um problema específico.

Elas podem inclusive ser combinadas para formar soluções elegantes e fáceis de manter.


Podemos combinar funções?

Sim.

Exemplo.

MOVE FUNCTION UPPER-CASE(
         FUNCTION TRIM(WS-NOME))
    TO WS-NOME

Primeiro remove espaços.

Depois converte para maiúsculas.

O resultado é obtido em uma única instrução.


Performance

Uma dúvida muito comum.

"As funções são mais lentas?"

Na enorme maioria dos casos.

Não.

Pelo contrário.

Elas fazem parte do próprio compilador.

São altamente otimizadas.

Na maioria das situações são mais rápidas e muito mais confiáveis do que algoritmos desenvolvidos manualmente.


Vantagens das Funções Intrínsecas

Entre os principais benefícios estão:

  • Menor quantidade de código.

  • Maior legibilidade.

  • Melhor manutenção.

  • Menor chance de erros.

  • Código mais padronizado.

  • Aproveitamento das otimizações do compilador.

  • Maior produtividade.

É um excelente exemplo do princípio de reutilização: em vez de reinventar uma solução, utilizamos uma implementação consolidada e amplamente testada.


Quando NÃO utilizar?

Existe apenas um cuidado.

Não utilizar funções apenas porque elas existem.

Por exemplo.

MOVE A TO B

Não precisa virar uma função.

Outro exemplo.

Somar dois números.

ADD A TO B

Continua sendo mais simples.

Funções devem resolver problemas específicos.

Não substituir comandos básicos da linguagem.


O que um Programador COBOL Padawan deve decorar?

Não é necessário memorizar todas as dezenas de funções disponíveis.

Mas vale conhecer as mais utilizadas:

✔ CURRENT-DATE

✔ LENGTH

✔ UPPER-CASE

✔ LOWER-CASE

✔ TRIM

✔ ABS

✔ INTEGER

✔ MAX

✔ MIN

✔ DATE-OF-INTEGER

✔ INTEGER-OF-DATE

Essas aparecem frequentemente em aplicações corporativas.

À medida que surgirem novas necessidades, outras funções poderão ser incorporadas naturalmente ao seu repertório.


Easter Egg Bellacosa ☕

Existe uma curiosidade interessante.

Quando um Programador COBOL Júnior escreve um algoritmo enorme para descobrir o maior valor de uma lista.

Um Programador Pleno costuma lembrar da função MAX.

Quando o Júnior implementa uma rotina inteira para converter textos para maiúsculas.

O Pleno utiliza UPPER-CASE.

Quando o Júnior cria dezenas de linhas para manipular datas.

O Sênior pergunta primeiro:

"Será que já existe uma Função Intrínseca para isso?"

Essa mudança de pensamento representa uma das maiores evoluções na carreira de um desenvolvedor.

A experiência não consiste apenas em conhecer mais comandos.

Consiste em saber que o compilador já oferece ferramentas prontas, seguras e altamente otimizadas para resolver muitos problemas comuns.


Conclusão

As Funções Intrínsecas representam um verdadeiro kit de ferramentas embutido no Enterprise COBOL. Elas simplificam cálculos, manipulação de textos, tratamento de datas, conversões e diversas outras tarefas recorrentes, permitindo que o desenvolvedor concentre seus esforços na regra de negócio em vez de reescrever algoritmos básicos.

Para um Programador COBOL Padawan, dominar esse recurso significa dar um passo importante rumo a um código mais limpo, legível e profissional. Em vez de decorar todas as funções existentes, o mais importante é compreender seus grupos, saber quando utilizá-las e criar o hábito de consultar a documentação do compilador sempre que surgir um novo desafio.

Lembre-se: um bom Programador COBOL não é aquele que escreve mais código. É aquele que conhece melhor a linguagem e utiliza seus recursos para construir soluções simples, robustas, eficientes e fáceis de manter. Afinal, no universo do IBM Mainframe, elegância e confiabilidade caminham sempre lado a lado.

Sem comentários:

Enviar um comentário