Configurando o ambiente COBOL 4.5

Veja neste artigo como configurar o compilador COBOL 4.5 no DOS e no simulador de 32 bit DOSBox.

Neste artigo veremos como configurar o ambiente COBOL 4.5, isso é importante para aqueles que querem dar um passo maior com a linguagem COBOL, fazendo do seu arquivo COBOL um executável.

Para tanto estaremos mostrando como configurar o compilador COBOL 4.5 dentro de um sistema operacional de 32 bits. Caso você tenha um sistema operacional de 64 bits, é indicado fazer um download da ferramenta que citaremos aqui, que é o DOSBox. Caso seu sistema operacional tenha um sistema de compatibilidade forte, que é muito difícil simular por si só a concatenação de bits, então você não precisará utilizar o DOSBox.

Por conveniência, veremos os passos com o prompt de comando do próprio Windows e da ferramenta DOSBox que vai ser baixada dentro do Windows também.

Primeiro passo: faça o download do COBOL 4.5 e descompacte-o na pasta raiz C:\. Em seguida acesse o prompt de comandos e depois a pasta raiz

Listagem 1: Acessando a pasta raíz no prompt

CD\

Se está montando uma partição com algum simulador de sistema de 32 bits, como o DOSBox, faça a montagem apenas como se fosse a pasta C:\ e depois acessando o diretório criado.

Listagem 2: Acessando a pasta raiz no DOSBox

mount c c: c:

Figura 1: O resultado dos comandos no DOSBox

Isso porque as variáveis de configuração do arquivo em lotes "SETCOBOL.BAT" irão apontar exatamente para o caminho da pasta raiz padrão.

Listagem 3: Descrição do arquivo "SETCOBOL.BAT", que vai estar na pasta SOURCE

PATH=C:\COBOL45\BIN; SET COBDIR=C:\COBOL45\BIN; SET LIB=C:\COBOL45\LIB; SET COBHNF=C:\COBOL45\HELP; SET INCLUDE=C:\COBOL45\SOURCE; SET HELPFILES=C:\COBOL45\HELP; SET INIT=C:\COBOL45\INIT;

Caso tenha montado um outro diretório com outra nomenclatura, com “mount j c:\”, é só renomear o arquivo do SETCOBOL onde aponta o caminho de C:\ para j:\.

Listagem 4: Mudando o diretório de C:\ para j:\

PATH=j:\COBOL45\BIN; SET COBDIR=j:\COBOL45\BIN; SET LIB=j:\COBOL45\LIB; SET COBHNF=j:\COBOL45\HELP; SET INCLUDE=j:\COBOL45\SOURCE; SET HELPFILES=j:\COBOL45\HELP; SET INIT=j:\COBOL45\INIT;

Isso pode causar um trabalho imenso e o intuito não é esse, então se está usando o simulador DOSBox, faça conforme os passos iniciais montando um diretório com o mesmo nome da pasta raiz C, se não está usando despreze essa parte de montagem.

Feito isso, é só acessar a pasta SOURCE.

Veja que agora, em ambos os casos, você já está no diretório inicial c:\, então é só continuar com esses passos.

Listagem 5: Acessando a pasta SOURCE

C:\cd COBOL 4.5 C:\COBOL4.5\cd source C:\COBOL4.5\SOURCE\

Essa parte de acessar a pasta SOURCE é muito importante. Caso tenha feito o download e o nome da pasta original seja COBOL45, o que fazer? É simples, substitua COBOL4.5 por COBOL45.

Digite dir par ver se o arquivo de configuração, "SETCOBOL.BAT", está dentro da pasta. Se estiver, é só chama-lo, assim:

Listagem 6: Acionando arquivo de configuração

C:\COBOL4.5\SOURCE\SETCOBOL.BAT

O resultado será conforme a Figura 2.


Figura 2: Resultado da configuração para desenvolvimento COBOL 4.5

Ele irá automaticamente configurar o ambiente para desenvolvimento COBOL. Como isso acontece? Ele habilita o compilador e outros programas que estão dentro da pasta bin e outras pastas, tornando-os visíveis na pasta SOURCE.

Agora já temos o ambiente configurado através do console, o que isso significa é que você já poderá programar no console. Se fechar o console, tem que configurar novamente, se não, siga os próximos passos.

Coloque os arquivos com extensão cbl e cob, dentro da pasta SOURCE.

Digamos que você acabou de salvar o MSPROG com extensão cbl na pasta SOURCE, então é só digitar dir, que seus arquivos vão ser listados.


Figura 3: Lista de arquivos na pasta SOURCE

Para compilar, digite o nome do compilador e o arquivo com a extensão depois do ponto e ponto e virgula no final.

Listagem 7: Primeira compilação

COBOL arquivo.extensão;

Assim ele estará criando o objeto, agora é só gerar o executável, chamando o link e o programa.

Listagem 8: Criando o executável

LINK arquivo.obj;

Agora, não tendo nenhum problema de compilação, você terá o executável.

Listagem 9: Chamando o executável

arquivo.exe

Com isso seu programa já é um executável, mas não significa que por não ter nenhum problema de compilação esteja correto ou por ter algum problema de compilação esteja errada a sintaxe dele.

Uma das explicações para isso, em um dos casos, é que tem erro que é mais frequente, como o erro do display e do accept.

Listagem 10: Código usado nas versões anteriores

DISPLAY (05, 05) "QUALQUER COISA". ACCEPT (05, 15) VARIAVEL.

Listagem 11: Código usado nas versões atuais

DISPLAY "QUALQUER COISA" AT 0505. ACCEPT VARIAVELAT 0515.

Percebeu que as linhas e colunas estão juntas?

Você pode encontrar um programa completo de demonstração na pasta DEMO. A seguir desenvolvemos um programa de demonstração e que não está na pasta DEMO, que use poucos recursos da linguagem COBOL ao invés de não usarmos nenhum, como é o caso em que geralmente conhecemos de exemplos na internet, com programas "completos” com apenas mensagem.

Listagem 12: Programa executável completo

IDENTIFICATION DIVISION. PROGRAM-ID.JALMOX. * ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FUNC ASSIGN TO "FUNC.DAT" organization is line sequential STATUS ST-ERRO. data division. FILE SECTION. FD FUNC. 01 REG-FUNC. 02RE PIC 9(06). 02NOME PIC X(30). 02TIPO-SALARIO PIC X(01). 02SALARIO-BASE PIC 9(06)V99. 02NUMERO-FILHOS PIC 99. WORKING-STORAGE SECTION. 77 ST-ERRO PIC X(02) VALUE "00". 77MENS1 PIC X(01). 01VARIAVEIS-SISTEMA. 02 WS-LIMPA PIC X(30) VALUE SPACES. 02 WS-CONT PIC 9(03) VALUE ZEROS. 02 ED-CONT PIC ZZ9. 01 WS-DATA. 02WS-ANO PIC 9(02) VALUE ZEROS. 02WS-MES PIC 9(02) VALUE ZEROS. 02WS-DIA PIC 9(02) VALUE ZEROS. 01WS-HORA. 02 WS-HOR PIC 9(02) VALUE ZEROS. 02 WS-MIN PIC 9(02) VALUE ZEROS. 02 WS-SEG PIC 9(02) VALUE ZEROS. 02 WS-CSE PIC 9(02) VALUE ZEROS. SCREEN SECTION. 01 TELA. 02 BLANK SCREEN. 02 LINE 1 COLUMN 1 VALUE "DATA:". 02LINE 1 COLUMN 29 VALUE "Simulacao de cadastro". 02 LINE 5 COLUMN 07 VALUE "RE.......................:". 02 LINE 7 COLUMN 07 VALUE "NOME.....................:". 02 LINE 9 COLUMN 07 VALUE "TIPO SALARIO..H, M OU D..:". 02 LINE 11 COLUMN 07 VALUE "SALARIO BASE.............:". 02 LINE 13 COLUMN 07 VALUE "NUMERO DE FILHOS.........:". 02 LINE 21 COLUMN 07 VALUE "MENSAGEM: ". 02 LINE 21 COLUMN 60 VALUE "Contador<>". 02 TRE LINE 05 COLUMN 34 PIC 999999 USING RE HIGHLIGHT. 02 TNOME LINE 07 COLUMN 34 PIC X(30) USING NOME HIGHLIGHT. 02 TPO-SALARIO LINE 09 COLUMN 34 PIC X(01) USING TIPO-SALARIO HIGHLIGHT. 02 TSALARIO LINE 11 COLUMN 34 PIC 9(06)V99 USING SALARIO-BASE HIGHLIGHT. 02 NUMER-FILHOS LINE 13 COLUMN 34 PIC 99 USING NUMERO-FILHOS HIGHLIGHT. PROCEDURE DIVISION. 010-INICIO. OPEN I-O FUNC IF ST-ERRO = "30" OPEN OUTPUT FUNC CLOSE FUNC GO TO 010-INICIO ELSE MOVE ZEROS TO RE MOVE SPACES TO NOME MOVE SPACES TO TIPO-SALARIO MOVE ZEROS TO NUMERO-FILHOS ACCEPT WS-HORA FROM TIME. ACCEPT WS-DATA FROM DATE. 020-VIDEO. DISPLAY TELA. DISPLAYWS-DIA "/" WS-MES "/" WS-ANO at 0107. 030-LIMPA-DADOS. DISPLAY WS-LIMPA at 0534. DISPLAY WS-LIMPA at 0734. DISPLAY WS-LIMPA at 0934. DISPLAY WS-LIMPA at 1134. DISPLAY WS-LIMPA at 1334. DISPLAY WS-LIMPA at 2118. DISPLAY WS-LIMPA at 2340. 040-CODIGO. ACCEPT TRE READ FUNC IF RE = ZEROS DISPLAY "Registro invalido - Redigite" at 2118 GO TO 040-CODIGO. 041-NOME. ACCEPT TNOME IF NOME = SPACES DISPLAY"Nome em Branco - Redigite" at 2118 GO TO 041-NOME. 042-TIPO. ACCEPT TPO-SALARIO IF TIPO-SALARIO = "d" OR TIPO-SALARIO = "H" OR TIPO-SALARIO = "h" OR TIPO-SALARIO = "M" OR TIPO-SALARIO = "m" OR TIPO-SALARIO = "D" GO TO 043-TSALAR-BASE ELSE DISPLAY"Tipo Invalido - Redigite" at 2118 GO TO 042-TIPO. 043-TSALAR-BASE. ACCEPT TSALARIO IF SALARIO-BASE = ZEROS GO TO 043-TSALAR-BASE. 044-CUSTO. ACCEPT NUMER-FILHOS IF NUMERO-FILHOS > 20 GO TO 044-CUSTO. 050-GRAVAR. DISPLAY "FUNCIONARIO GRAVADO COM SUCESSO" at 2034. CLOSE FUNC. STOP RUN. ***---------- FIM DO PROGRAMA JALMOX ---------***

Então esse foi um exemplo de programa completo para teste no seu ambiente COBOL 4.5. Você não precisará em embasar-se nele para todos os desenvolvimentos, o COBOL é fruto de muita pesquisa e análise, em que cada um pode construir sua lógica, mas também o COBOL é fruto de muita cópia de código pré-compilável. Como outras linguagens, ninguém irá dominar sem que tenha estudado o código de outro para entender a linguagem.

Então vamos quebrar todo o código e ver sua explicação por partes.

Aqui está a parte inicial de identificação do programa, você pode chama-lo de qualquer coisa, nós o chamamos de JALMOX.

Listagem 13: Identificação do programa

IDENTIFICATION DIVISION. PROGRAM-ID.JALMOX.

Agora já começamos com configuração dentro da ENVIRONMENT DIVISION. Primeiro configuramos os nomes especiais, ou seja, vamos declarar que a vírgula é o ponto decimal, mudando o modo padrão Americano.

Listagem 14: Configurando ENVIRONMENT DIVISION

ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL-POINT IS COMMA.

Ainda dentro da ENVIRONMENT DIVISION, vamos configurar os arquivos de entrada e saída, utilizando uma SELECT para cada arquivo e apontando o endereço lógico, que nesse caso vai ser "FUNC.DAT".

Quando o arquivo for criado, você vai vê-lo com esse nome e extensão dentro da pasta SOURCE, a organização dele vai ser sequencial e a variável que vai retornar o status do arquivo vai ser ST-ERRO, com o status indicando uma informação. Você vai ver o status retornar dois dígitos, o ST-ERRO que vai ser declarado na WORKING, depois, caso necessite, é só imprimir esse status e procurar informação em uma tabela de status. A IBM tem algumas tabelas online, muitas vezes em inglês, mas ajudam muito.

Listagem 15: Configurando o arquivo

INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FUNC ASSIGN TO "FUNC.DAT" organization is line sequential STATUS ST-ERRO.

Agora chegou a hora de entrarmos na estrutura do arquivo, isso se fará na DATA DIVISION. Quando você abrir uma file section, não precisará por mais de uma, é só declarar uma FD para cada arquivo.

Listagem 16: Declarando FD

data division. FILE SECTION. FD FUNC.

Embaixo da FD estará o registro com as variáveis. Perceba que sempre vai vir uma numeração na frente, os registros obrigatoriamente têm a numeração 01 na frente, as demais variáveis podem vir "geralmente" até o nível 77. Então a declaração da variável vai ser como segue embaixo, nível, nome da variável, PIC, de Picture (tipo 9 para inteiros e x para alfanuméricos) e, por último, tamanho (a vírgula indica os decimais).

Listagem 17: Registrando as variáveis

01 REG-FUNC. 02RE PIC 9(06). 02NOME PIC X(30). 02TIPO-SALARIO PIC X(01). 02SALARIO-BASE PIC 9(06)V99. 02NUMERO-FILHOS PIC 99.

Agora estamos na parte da WORKING-STORAGE SECTION, que vai servir para declarar outras variáveis. Também tem estrutura de registro dentro da WORKING, veja o nível 01 aparecendo, essas variáveis de sistemas são as que vão colher algumas informações possíveis pelo teclado e outras como a data do sistema, que você vai poder observar quando executar o programa pela primeira vez no canto superior esquerdo.

Listagem 18: WORKING-STORAGE SECTION

WORKING-STORAGE SECTION. 77 ST-ERRO PIC X(02) VALUE "00". 77MENS1 PIC X(01). 01VARIAVEIS-SISTEMA. 02 WS-LIMPA PIC X(30) VALUE SPACES. 02 WS-CONT PIC 9(03) VALUE ZEROS. 02 ED-CONT PIC ZZ9. 01 WS-DATA. 02WS-ANO PIC 9(02) VALUE ZEROS. 02WS-MES PIC 9(02) VALUE ZEROS. 02WS-DIA PIC 9(02) VALUE ZEROS. 01WS-HORA. 02 WS-HOR PIC 9(02) VALUE ZEROS. 02 WS-MIN PIC 9(02) VALUE ZEROS. 02 WS-SEG PIC 9(02) VALUE ZEROS. 02 WS-CSE PIC 9(02) VALUE ZEROS.

Então nós vamos criar a tela que estará dentro da SCREEN SECTION. Perceba que a linha aponta para a posição em tela do console e a coluna também, depois é só declarar o valor que aparecerá nessa posição.

Listagem 19: SCREEN SECTION

SCREEN SECTION. 01 TELA. 02 BLANK SCREEN. 02 LINE 1 COLUMN 1 VALUE "DATA:". 02LINE 1 COLUMN 29 VALUE "Simulacao de cadastro". 02 LINE 5 COLUMN 07 VALUE "RE.......................:". 02 LINE 7 COLUMN 07 VALUE "NOME.....................:". 02 LINE 9 COLUMN 07 VALUE "TIPO SALARIO..H, M OU D..:". 02 LINE 11 COLUMN 07 VALUE "SALARIO BASE.............:". 02 LINE 13 COLUMN 07 VALUE "NUMERO DE FILHOS.........:". 02LINE 21 COLUMN 07 VALUE "MENSAGEM: ". 02LINE 21 COLUMN 60 VALUE "Contador <>".

Ainda como parte da configuração da tela estaremos chamando as variáveis que suportarão as variáveis do arquivo, uma espécie de LABLEs especiais, e devem ter o mesmo tamanho e mesmo tipo. É como se nós estivéssemos dizendo que aqui estará um inteiro com um número de posições pré determinada, inteiro para inteiro e alfanumérico para alfanumérico.

Listagem 20: Variáveis

02 TRE LINE 05 COLUMN 34 PIC 999999 USING RE HIGHLIGHT. 02 TNOME LINE 07 COLUMN 34 PIC X(30) USING NOME HIGHLIGHT. 02 TPO-SALARIO LINE 09 COLUMN 34 PIC X(01) USING TIPO-SALARIO HIGHLIGHT. 02 TSALARIO LINE 11 COLUMN 34 PIC 9(06)V99 USING SALARIO-BASE HIGHLIGHT. 02 NUMER-FILHOS LINE 13 COLUMN 34 PIC 99 USING NUMERO-FILHOS HIGHLIGHT.

Chegamos então na parte final do PROCEDURE, que conterá todo o desenvolvimento, todos os métodos e funções. Aqui nós colocamos as LABLEs, por exemplo, 010-INICIO. terá a função de ser uma referência para esse trecho de código que está dentro dele até o ponto. O OPEN que é primordial para tratar com as variáveis do arquivo e com todo o arquivo, o CLOSE para fechar o arquivo.

O condicional IF continuará tratando situações de se sim ou se não. O GO TO irá apontar a LABLE para onde o processo será direcionado e o accept irá receber a informação. Já o display serve para exibir informações, enquanto o MOVE terá a função de preencher as variáveis com algum valor.

Listagem 21: SCREEN SECTION - Continuação

PROCEDURE DIVISION. 010-INICIO. OPEN I-O FUNC IF ST-ERRO = "30" OPEN OUTPUT FUNC CLOSE FUNC GO TO 010-INICIO ELSE MOVE ZEROS TO RE MOVE SPACES TO NOME MOVE SPACES TO TIPO-SALARIO MOVE ZEROS TO NUMERO-FILHOS ACCEPT WS-HORA FROM TIME. ACCEPT WS-DATA FROM DATE. 020-VIDEO. DISPLAY TELA. DISPLAYWS-DIA "/" WS-MES "/" WS-ANO at 0107.

Depois disso é puramente lógica, será a parte que você vai decidir como tratar e o que fazer com o seu programa. Limpamos cada espaço da tela que seria digitado com a variável WS-LIMPA, apontando a posição, e permitimos que as informações fossem digitadas em tela através do accept. Depois exibimos uma mensagem como se estivesse gravando através do display. Por último fechamos o arquivo FUNC.

Listagem 22: Finalizando FUNC.

030-LIMPA-DADOS. DISPLAY WS-LIMPA at 0534. DISPLAY WS-LIMPA at 0734. DISPLAY WS-LIMPA at 0934. DISPLAY WS-LIMPA at 1134. DISPLAY WS-LIMPA at 1334. DISPLAY WS-LIMPA at 2118. DISPLAY WS-LIMPA at 2340. 040-CODIGO. ACCEPT TRE READ FUNC IF RE = ZEROS DISPLAY "Registro invalido - Redigite" at 2118 GO TO 040-CODIGO. 041-NOME. ACCEPT TNOME IF NOME = SPACES DISPLAY"Nome em Branco - Redigite" at 2118 GO TO 041-NOME. 042-TIPO. ACCEPT TPO-SALARIO IF TIPO-SALARIO = "d" OR TIPO-SALARIO = "H" OR TIPO-SALARIO = "h" OR TIPO-SALARIO = "M" OR TIPO-SALARIO = "m" OR TIPO-SALARIO = "D" GO TO 043-TSALAR-BASE ELSE DISPLAY"Tipo Invalido - Redigite" at 2118 GO TO 042-TIPO. 043-TSALAR-BASE. ACCEPT TSALARIO IF SALARIO-BASE = ZEROS GO TO 043-TSALAR-BASE. 044-CUSTO. ACCEPT NUMER-FILHOS IF NUMERO-FILHOS > 20 GO TO 044-CUSTO. 050-GRAVAR. DISPLAY "FUNCIONARIO GRAVADO COM SUCESSO" at 2034. CLOSE FUNC. STOP RUN. ***---------- FIM DO PROGRAMA JALMOX ---------***

Outras dicas:

Essas pequenas alterações vão te ajudar como uma pequena introdução de configuração COBOL 4.5. E que todos tenham um ótimo proveito com o desenvolvimento COBOL 4.5.

Artigos relacionados