segunda-feira, 25 de janeiro de 2016

Comando String

Olá!

STRING é um dos comandos que serve para trabalhar os dados no COBOL. Com este é possível concatenar dois ou mais itens em um único, ou alterar o conteúdo de um item.

A estrutura do comando, é:
STRING item-1
       item-2
       DELIMITED BY (SIZE ou SPACE)
       INTO variável-destino
END-STRING.

Clausulas opcionais que o comando STRING possui:

STRING item-1 DELIMITED BY SIZE
       item-2 DELIMITED BY SPACE
       item-3 (7:4) DELIMITED BY SIZE
       INTO variável-destino
           WITH POINTER numero
           ON OVERFLOW comandos
           NOT ON OVERFLOW
END-STRING.

  • DELIMITED BY delimitador, ou SIZE, ou SPACE: por SIZE todo o conteúdo será considerado, mas com SPACE será considerado somente o conteúdo até o primeiro espaço encontrado; 
  • WITH POINTER: supondo que a variável-destino esteja com o valor “Olá “, e a ideia seja adicionar um dado na frente do valor “Olá “, então, o valor do ponteiro define em que posição começará a ser inserido dados na variável-destino. 
  • ON OVERFLOW: se os dados que serão inseridos na variável-destino ultrapassar o tamanho desta, então será executado os comandos
Temos abaixo a representação do uso do STRING.





































O resultado para os STRINGs executados, são:

STRING – Resultado
  1.         O ANALISTA FELIPE BARBOSA fez este exemplo em 21/01/2016
  2.         21-01-2016
  3.         ANALISTA
  4.         Exemplo gerado as 09:15 HS. Temperatura de -5
  5.         Olá ANALISTA FELIPE BARBOSA
  6.         Aconteceu OVERFLOW da variável.
  7.         ANALISTA F

Observação: no STRING não é possível utilizar variáveis COMP, certifique que as variáveis usadas estão no formato DISPLAY.

Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.


Até o próximo post!

quinta-feira, 21 de janeiro de 2016

Pesquisa em tabela - Search

Olá!

Para pesquisar um registro específico em uma tabela no COBOL, a busca pode ser realizada com o comando SEARCH.

O comando SEARCH pesquisa na tabela por meio de uma condição, e quando está condição é satisfeita se executa os COMANDOS-B. Mas quando a condição não é satisfeita, ou seja, a pesquisa chegou no fim da tabela e não encontrou resultado, então é realizado os COMANDOS-A.

Estrutura do comando:

SEARCH ALL NOME-TABELA
    NO FIM

        COMANDOS-A
    QUANDO CAMPO-TABELA IGUAL VALOR
        COMANDOS-B
SEARCH-FIM.


É necessário que a tabela seja indexada, e tem como boa prática indicar a chave da tabela em ordem ascendente ou descendente.

Exemplo de uma tabela:
       01 TABELA.
           03 TAB-A OCCURS  0 TO 5 TIMES
                      DEPENDING ON QUANTIDADE-REGISTROS
                     ASCENDING KEY TAB-A-CHAVE
                        INDEXED BY TAB-A-INDEX.
               05 TAB-A-CHAVE           PIC  9(009).
               05 TAB-A-CAMPO2          PIC  X(010).

Abaixo temos o código que Limpa, Preenche e Pesquisa o nome do aluno na tabela usando o comando SEARCH, sendo que a condição é quando a matricula informada for igual a uma que esteja na tabela.


O resultado para NOME-ALU = 'Deanne Dias'.


Possíveis situações:

  • Chave duplicada: quando a chave da tabela é inconsistente, e apresenta os mesmos valores em alguns registros, na execução do SEARCH será apresentado somente o primeiro registro encontrado.
  • Não utilizar o comando AT END: se não for encontrado resultado nada acontecerá.

Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.


Até o próximo post!


terça-feira, 19 de janeiro de 2016

Popular tabela interna COBOL

Olá!

Popular tabela é algo simples, porém deve-se ficar atento aos detalhes:
  1. Inicialize o campo a ser preenchido: evita que não seja movimentado algum dado para um campo com “sujeira”;
  2. Cuidado com os indexes que estão sendo utilizados no programa, evita:
                 Movimentação para o campo errado;
                 Sobrepor um dado existente;
                 Deixar um campo da tabela vazio;
                 Ultrapassar o limite de registros da tabela.

Está duas sugestões colaboram para que não seja cometido os erros mais comuns quando estar manipulando dados para uma tabela.

No código abaixo temos a demonstração da movimentação de cinco alunos para a TABELA-ALUNO (matricula; nome; idade). Onde, primeiramente é realizado a limpeza dos campos a serem preenchidos e depois a carga dos dados na tabela.














































Após a execução deste código temos o seguinte resultado:




Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.


Até o próximo post!

segunda-feira, 18 de janeiro de 2016

Laço de repetição - Simples



Olá,

neste post é apresentado uma estrutura básica para realizar um laço de repetição com o comando PERFORM UNTIL.




Exemplo: no código abaixo é para somar 1 na variável GDA-SOMA até que a variável NDX-LOOP seja igual a 10.




Após a execução do código acima, temos:
NDX-LOOP  = 10
GDA-SOMA = 10

Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.

Até o próximo post!

Calculando uma expressão aritmética - COMPUTE

Olá!

Para calcular uma expressão aritmética é necessário utilizar o comando COMPUTE. Com este comando é possível utilizar um ou mais operadores aritméticos na mesma linha de comando.

Estrutura básica:

COMPUTE variável-resultado EQUAL “A” – “B” + “C” * “D

Todavia, é bom atentar a ordem de prioridade algébrica/aritmética das operações, para que a expressão não seja calculada de forma errada. Com o COMPUTE também podemos utilizar o símbolos “()” para estabelecer a ordem dos cálculos. Exemplo:

COMPUTE variável-resultado EQUAL “A” – ((“B” + “C”) * “D”)

Neste caso então será realizado primeiro a adição, posteriormente a multiplicação e em seguida a subtração.

Exemplo em código:

Neste exemplo o valor final de GDA-RSTD = -19.

Clausula "ON SIZE RROR" é para realizar o tratamento de um possível erro na hora da execução do comando COMPUTE. Neste exemplo se acentece um erro iria ser executado "PERFORM 999001-ERRO-01".

Quando a expressão a ser calculada é grande como o exemplo:

COMPUTE variável-resultado EQUAL
(“A” ** (1/56)) – ((“B” + “C”) * “D”) / (((“B” + “C”) * TAXA) / 100 + JUROS)

Se utilizar um comando COMPUTE para calcula-la irá funcionar, mas pense na dificuldade do entendimento do cálculo, e também para possíveis manutenções que possam ser necessárias.

Então, para expor a expressão de uma maneira mais clara e legível é recomendado subdividir o cálculo em partes menores e utilizar os comandos de operações aritméticas nativas do COBOL como ADD, SUBTRACT, DIVIDE, etc.

Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.


Até o próximo post!

Usando os operadores aritméticos



Olá!

Ao utilizar os operadores aritméticos temos a seguinte relação:


Segue a estrutura dos comandos:

ADD
Adiciona o valor “A” em “B” e armazena o resultado em “C”

SUBTRACT
Subtrai o valor “A” de “B” e armazena o resultado em “C”

MULTIPLY
Multiplica o valor de “A” por “B” armazena o resultado em “C”

DIVIDE
Divide o valor de “A” por “B” armazena o resultado em “C”

No caso da Exponenciação não há um operador, assim para realizar o cálculo com o símbolo é necessário utilizar o comando COMPUTE.

No código abaixo temos a representação da utilização desses operadores.




















Assim, após a execução deste código temos:
GDA-VL-ADICAO           = 15
GDA-VL-SUBTRACAO        = 5
GDA-VL-MULTIPLICACAO    = 50
GDA-VL-DIVISAO          = 2
GDA-VL-EXPONENCIACAO    = 9765625

Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.


Até o próximo post!

sexta-feira, 15 de janeiro de 2016

Termos e Abreviaturas

Olá!

No link abaixo é apresentado a lista com os termos e abreviaturas utilizados nos códigos deste blog.

Link aqui

Experiência COBOL - Primeiro Post

Olá! O primeiro post tem que ser um Hello World!




Para Ctrl + C do código acesse aqui.

Até o próximo!