Olá!
Para não ter problemas de case sensitive ao realizar comparações de variáveis alpha "PIC X(nnn)", é uma boa prática transformar as strings das variáveis em caixa alta ou baixa (maiúscula ou minuscula).
- O comando FUNCTION UPPER-CASE (variável), transforma todo conteúdo de uma variável para maiúscula.
- E o comando FUNCTION LOWER-CASE (variável), transforma todo conteúdo de uma variável para minuscula.
Exemplo da utilização desses comandos:
Neste exemplo será utilizado duas variáveis uma com um texto contante, e outra para armazenar a simulação de um texto enviado para a entrada do programa, segue a declaração das variáveis:
*
-- VARIAVEIS TEXTOS
77 GDA-TX-EXEMPLO PIC X(015) VALUE '-FELIPE-TESTES-'.
77 GDA-TX-ENTRADA PIC X(015) VALUE SPACES.
Movimentação do texto de entrada com letras maiúsculas e minusculas:
*
-- MOVIMENTA O TEXTO PARA SIMULAR DADOS DE ENTRADA
MOVE '-FeliPe-tEsTes-' TO GDA-TX-ENTRADA.
Agora com o comando UPPER-CASE para converter todos caracteres para maiúsculo, é realizada a verificação de igualdade:
*
-- VERIFICA SE O TEXTO DE ENTRADA == TEXTO EXEMPLO
IF (FUNCTION UPPER-CASE(GDA-TX-ENTRADA)) NOT EQUAL
(FUNCTION
UPPER-CASE(GDA-TX-EXEMPLO))
PERFORM 999001-ERRO-01
END-IF.
Ou seja, deste modo será comparado:
IF '-FELIPE-TESTES-' NOT
EQUAL
'-FELIPE-TESTES-'
PERFORM 999001-ERRO-01
END-IF.
De modo que a conversão seja realizada para que a string fique com o texto em caixa baixa, utilize conforme:
FUNCTION LOWER-CASE(texto)
Exemplo:
*
-- MOVIMENTA/CONVERTE O TEXTO PARA CAIXA BAIXA
MOVE FUNCTION LOWER-CASE(GDA-TX-ENTRADA) TO
GDA-TX-MINUSCULA.
Logo abaixo há o código COBOL respectivo aos exemplos acima:
Então, para realizar a comparação entre strings (alpha / texto), é bom ter em mente:
1 - Variáveis alpha armazenam espaços em branco à direita, se não totalmente preenchidas.
Exemplo:
77 GDA-TX-TESTE PIC
X(010) VALUE SPACES.
MOVE 'Felipe' TO GDA-TX-TESTE.
DISPLAY GDA-TX-TESTE.
Resultado
= 'Felipe '.
2 - Para não ter problemas com Case Sensitive, transforme a string das variáveis que estão sendo comparadas para maiúscula ou minuscula.
Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA
FELIPE BARBOSA FERREIRA
Até o próximo post!