Sitemap

LOOPINGS em COBOL

3 min readApr 24, 2021

--

Vamos falar de loopings em COBOL? sim, COBOL rs.

Existe mais de uma forma de você fazer loopings no COBOL, e cada uma delas vai atender melhor a uma necessidade específica, vale a pena entende-las para deixar o seu código mais legível e performático.

Para começar, vou falar do looping que eu mais gosto de usar, que é o que eu não preciso manipular a variável de controle do looping, estamos falando do PERFORM VARYING, sua sintaxe é a seguinte:

PERFORM VARYING WIND FROM 1 BY 1
UNTIL WIND GREATER 5
DISPLAY 'WIND VALE: ' WIND
END-PERFORM.

Estou dizendo o seguinte com esse código: imprima ‘WIND VALE: ‘ + valor da variável WIND (PIC 9(4)), até que WIND seja maior que 5. o resultado seria:

WIND VALE: 0001
WIND VALE: 0002
WIND VALE: 0003
WIND VALE: 0004
WIND VALE: 0005

A vantagem dessa sintaxe é que não importa qual o valor de WIND, sempre que o looping iniciar ele será setado para o valor 1, e o looping ocorrerá até a condição until ser satisfeita, com isso não precisamos nos preocupar em inicializar a variável ou incrementa-la.

Get Wander’s stories in your inbox

Join Medium for free to get updates from this writer.

O segundo tipo de looping que vou falar é bem parecido, mas esse você terá um valor fixo para limitar a quantidade de vezes que o laço será executado, sua sintaxe ficará da seguinte forma:

PERFORM RT-MENSAGEM 4 TIMES.

RT-MENSAGEM.
ADD 1 TO WIND
DISPLAY 'WIND VALE: ' WIND.
RT-MENSAGEMX. EXIT.

Note que não estou usando a variável WIND para controle do looping, apenas para exibir os valores dela que estou incrementando com ADD 1, o resultado será:

WIND VALE: 0001
WIND VALE: 0002
WIND VALE: 0003
WIND VALE: 0004
WIND VALE: 0005

O próximo looping é um dos mais comuns, são os que mais vejo nos programas COBOL, onde você controla o looping incrementando a variável de controle e inicializando ela antes do looping sempre, sua sintaxe é a seguinte:

MOVE 1 TO WIND
PERFORM RT-MENSAGEM UNTIL WIND GREATER 4.

RT-MENSAGEM.
DISPLAY 'WIND VALE: ' WIND
ADD 1 TO WIND.
RT-MENSAGEMX. EXIT.

Perceba, antes do looping eu inicializo WIND com 1, e dentro da rotina executada vou incrementando WIND com ADD 1 TO WIND, para assim então controlar o looping, esse laço é interessante quando você tem uma situação em que precisa manipular os indices, talvez sendo necessário descartar algum valor de uma lista por exemplo.

O resultado do código acima, seria:

WIND VALE: 0001
WIND VALE: 0002
WIND VALE: 0003
WIND VALE: 0004
WIND VALE: 0005

O último looping é igual ao apresentado acima, porém não chamamos uma rotina para executar, colocamos as instruções ali no looping mesmo, o que não me agrada muito, a sintaxe ficaria da seguinte forma:

MOVE 1 TO WIND
PERFORM UNTIL WIND GREATER 5
DISPLAY 'WIND VALE: ' WIND
ADD 1 TO WIND

END-PERFORM.

e o resultado, seria:

WIND VALE: 0001
WIND VALE: 0002
WIND VALE: 0003
WIND VALE: 0004
WIND VALE: 0005

Existem mais formas de se fazer um looping em COBOL, e também formas mais avançadas de controla-los, aqui eu trouxe o básico que vai resolver qualquer problema que você tenha que precise ser tratado em um looping no COBOL, minha recomendação é usar o primeiro tipo, pois evita intervenção do programador para manipular a variável de controle, no entanto esse looping pode não ser interessante caso você precise manipular os indices.

Gostou? então deixa seu comentário e um joinha pra nós :-)

--

--

Wander
Wander

Written by Wander

Software Engineer. JAVA | SPRING | AWS.