Codigo Programa de Tabuada.

Bem, como estamos iniciando um processo de aprendizagem, nada melhor que começarmos a entender um simples codigo com sua devida identação a baixo um codigo em cobol, sobre tabuada.

EDIT GP.GPCR23.COBLIB(LEOPGM) - 01.04 Columns 00001 00072
Command ===> Scroll ===> CSR
****** ***************************** Top of Data ******************************
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. LEOPGM.
000300 AUTHOR. LEANDRO.
000400 DATE-WRITTEN. 22/07/2010.
000500 DATE-COMPILED.
000510 ******************************************************************
000600 *
000610 * P R O G R A MA D E T A B U A D A
000620 *
000700 ******************************************************************
000800 * E N V I R O N M E N T D I V I S I O N *
000900 ******************************************************************
001000 ENVIRONMENT DIVISION.
001100 CONFIGURATION SECTION.
001200 SPECIAL-NAMES.
001300 DECIMAL-POINT IS COMMA.
001400 *
001400 *
001500 ******************************************************************
001600 * D A T A D I V I S I O N *
001700 ******************************************************************
001800 DATA DIVISION.
001900 *
002000 ******************************************************************
002100 * WORKING-STORAGE SECTION. *
002200 ******************************************************************
002300 WORKING-STORAGE SECTION.
002400 *
002500 *----------------------------------------------------------------*
002600 * WS-AUXILIAR *
002700 *----------------------------------------------------------------*
002800 01 WS-AUXILIAR.
002910 05 WS-RESULTADO PIC 9(02) VALUE ZEROS.
002920 05 WS-RESULTADO2 PIC 9(03) VALUE ZEROS.
003000 05 WS-INDEX PIC 9(02) VALUE ZEROS.
003200 05 WS-INDEX2 PIC 9(02) VALUE ZEROS.
003500 *
003600 ******************************************************************
003700 * PROCEDURE DIVISION *
003800 ******************************************************************
003900 PROCEDURE DIVISION .
004000 *
004100 ******************************************************************
004200 * MAINLINE *
004300 ******************************************************************
004400 MAINLINE.
004500 *
004600 PERFORM 1000-INICIO
004700 *
004800 PERFORM 2000-PROCESSO
004900 *
005000 PERFORM 3000-FINAL.
005100 *
005200 ******************************************************************
005210 * 1000-INICIO *
005220 ******************************************************************
005230 1000-INICIO.
005240 *
005250 INITIALIZE WS-AUXILIAR.
005270 *
005280 ******************************************************************
005290 * 2000-PROCESSO *
005291 ******************************************************************
005292 2000-PROCESSO.
005293 *
005294 INITIALIZE WS-INDEX
005295 *
005297 PERFORM UNTIL WS-INDEX GREATER 9
005298 *
005299 ADD 1 TO WS-INDEX
005303 *
005304 DISPLAY '****************'
005305 DISPLAY '|TABUADA = 'WS-INDEX ' |'
005306 DISPLAY '****************'
005309 *
005310 INITIALIZE WS-INDEX2
005311 *
005312 PERFORM UNTIL WS-INDEX2 GREATER 9
005313 *
005314 ADD 1 TO WS-INDEX2
005315 *
005320 COMPUTE WS-RESULTADO =
005330 WS-INDEX * WS-INDEX2
005340 *
005341 IF WS-INDEX EQUAL 10 AND WS-INDEX2 EQUAL 10
005342 MOVE 100 TO WS-RESULTADO2
005343 DISPLAY '| ' WS-INDEX ' X '
005344 WS-INDEX2 ' = '
005345 WS-RESULTADO2 '| '
005346 ELSE
005391 DISPLAY '| ' WS-INDEX ' X '
005392 WS-INDEX2 ' = '
005393 WS-RESULTADO ' | '
005393 WS-RESULTADO ' | '
005399 END-IF
005400 *
005401 END-PERFORM
005402 *
005403 END-PERFORM
005404 .
005405 *
005410 ******************************************************************
005420 * 3000-FINAL *
005430 ******************************************************************
005440 3000-FINAL.
005450 *
005460 GOBACK.
005470 *
005480 ******************************************************************
005490 * FIM *
005491 ******************************************************************

Codigo "Sequential File - Health Care"

Sequential File - Health Care

--------------------------------------------------------------------------------

Código:
IDENTIFICATION DIVISION.
PROGRAM-ID. Health-Care.
AUTHOR. CKUMARESAN.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT OUT-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD IN-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "Med.In".
01 IN-REC.
02 EMPID PIC X(6).
02 EMPNAME PIC X(20).
02 CADRE PIC X(3).
02 DEPARTMENT PIC X(20).
02 DESIGNATION PIC X(20).
FD OUT-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "Med.Out".
01 OUT-REC PIC X(120).
WORKING-STORAGE SECTION.
77 SNO PIC 9(4) VALUE ZERO.
77 OP PIC 9(8) VALUE ZERO.
77 IP PIC 9(8) VALUE ZERO.
77 SELF PIC 9(8) VALUE ZERO.
77 DEPENDANT PIC 9(8) VALUE ZERO.

01 HEAD-LINE.
02 F PIC X(80) VALUE ALL "~".
01 HEAD-SPACE.
02 F PIC X(80) VALUE ALL " ".
01 HEAD-1.
02 F PIC X(28) VALUE SPACES.
02 F PIC X(23) VALUE "CKUMS MOTOR INDIA LTD".
01 HEAD-2.
02 F PIC X(31) VALUE SPACE.
02 F PIC X(18) VALUE "HEALTH CARE SCHEME".
01 HEAD-3.
02 F PIC X(28) VALUE SPACES.
02 F PIC X(24) VALUE "MEDICAL COVERAGE DETAILS".
01 HEAD-4.
02 F PIC X(1) VALUE SPACES.
02 F PIC X(4) VALUE "S.No".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(6) VALUE "EMP.ID".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(14) VALUE "EMP.NAME".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(5) VALUE "CADRE".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(15) VALUE "DESIGNATION".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(15) VALUE "DEPARTMENT".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(6) VALUE "FOR OP".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(6) VALUE "FOR IP".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(8) VALUE "SELF".
02 F PIC X(2) VALUE SPACES.
02 F PIC X(13) VALUE "DEPENDANT".
01 OUTPUT-VALUE.
02 F PIC X(2) VALUE SPACES.
02 SNO-O PIC X(2).
02 F PIC X(2) VALUE SPACES.
02 EMPID-O PIC X(6).
02 F PIC X(2) VALUE SPACES.
02 EMPNAME-O PIC X(15).
02 F PIC X(2) VALUE SPACES.
02 CADRE-O PIC X(3).
02 F PIC X(2) VALUE SPACES.
02 DESIGNATION-O PIC X(15).
02 F PIC X(2) VALUE SPACES.
02 DEPARTMENT-O PIC X(15).
02 F PIC X(2) VALUE SPACES.
02 OP-O PIC ZZZZ.ZZ.
02 F PIC X(2) VALUE SPACES.
02 IP-O PIC ZZZZZZ.ZZ.
02 F PIC X(2) VALUE SPACES.
02 SELF-O PIC ZZZZZZ.ZZ.
02 F PIC X(2) VALUE SPACES.
02 DEPENDANT-O PIC ZZZZZZ.ZZ.

77 OPT PIC X.

PROCEDURE DIVISION.
MENU-PARA.
DISPLAY (1 1) ERASE.
DISPLAY (3 12) "MENU".
DISPLAY (5 15) "C FOR CREARATION".
DISPLAY (7 15) "P FOR PROCESS".
DISPLAY (9 15) "ENTER YOUR CHOICE "
ACCEPT (9 45) OPT.
IF OPT = "C" OR OPT = "c" GO TO CREATE-PARA.
IF OPT = "P" OR OPT = "p" GO TO PROCESS-PARA.
IF OPT = "Q" OR OPT = "q" GO TO CLOSE-PARA.
CREATE-PARA.
OPEN OUTPUT IN-FILE.
INPUT-PARA.
DISPLAY (1 1) ERASE.
DISPLAY (5 5) "EMPLOYEE ID : ".
DISPLAY (7 5) "EMPLOYEE NAME : ".
DISPLAY (9 5) "CADRE : ".
DISPLAY (11 5) "DESIGNATION : ".
DISPLAY (13 5) "DEPARTMENT : ".
ACCEPT (5 35) EMPID.
ACCEPT (7 35) EMPNAME.
ACCEPT (9 35) CADRE.
ACCEPT (11 35) DESIGNATION.
ACCEPT (13 35) DEPARTMENT.
WRITE IN-REC.
DISPLAY (20 20) "WANT TO ADD ONE MORE ? ".
ACCEPT (20 60) OPT.
IF OPT = "Y" OR OPT = "y" GO TO INPUT-PARA.
CLOSE IN-FILE.
GO TO MENU-PARA.
PROCESS-PARA.
OPEN INPUT IN-FILE OUTPUT OUT-FILE.
WRITE-PARA.
WRITE OUT-REC FROM HEAD-1.
WRITE OUT-REC FROM HEAD-2.
WRITE OUT-REC FROM HEAD-3.
WRITE OUT-REC FROM HEAD-LINE.
WRITE OUT-REC FROM HEAD-4.
WRITE OUT-REC FROM HEAD-LINE.
READ-PARA.
READ IN-FILE AT END GO TO CLOSE-PARA.
CALC-PARA.
IF CADRE = "EXE" MOVE 150000 TO IP-O.
IF CADRE = "NEX" OR CADRE = "JEX" MOVE 100000 TO IP-O.
MOVE 5000 TO OP-O.
IF CADRE = "EXE"
MOVE 75000 TO SELF-O
MOVE 50000 TO DEPENDANT-O.
IF CADRE ="JEX" OR CADRE = "NEX"
MOVE 40000 TO SELF-O
MOVE 30000 TO DEPENDANT-O.
COMPUTE SNO = SNO + 1.
MOVE SNO TO SNO-O.
MOVE EMPID TO EMPID-O.
MOVE EMPNAME TO EMPNAME-O.
MOVE CADRE TO CADRE-O.
MOVE DESIGNATION TO DESIGNATION-O.
MOVE DEPARTMENT TO DEPARTMENT-O.
WRITE OUT-REC FROM OUTPUT-VALUE.
GO TO READ-PARA.
CLOSE-PARA.
WRITE OUT-REC FROM HEAD-LINE.
CLOSE IN-FILE , OUT-FILE.
STOP RUN.

Palavras reservadas mais utilizadas em COBOL

ACCEPT: Comando de entrada de dados que serão carregados em memória, na área de definição de dados. Usado para leitura campos informados pelo usuário, dispositivos do sistemas e dados do sistema como data e hora.
ACCESS: Cláusula para declaração do modo de acesso aos arquivos.
ADD: Comando aritmético para soma entre dois ou mais operandos.
ZERO: Constante figurativa para o valor zero, usado para atribuição e comparação.
WRITE: Comando de gravação de arquivos. A ação de gravação de arquivos, é obrigatóriamente, precedida de um comando OPEN OUTPUT(gravação).
WORKING-STORAGE: Nome da seção de armazenamento de todos os dados que serão utilizados nos procedimentos durante a execução do programa. Embora não seja obrigatória, é uma das principais seções da DATA DIVISION. Geralmente, uma boa definição dos dados facilitam a execução dos programas. Todas as variáveis possuem escopo global - todas rotinas enxergam e podem alterar o seu conteúdo.
SUBTRACT: Comando aritmético para subtração entre dois ou mais campos.
REMAINDER: REMAINDER: Resto de operações aritméticas de divisão que pode ser armazenado em campos.
READ: Comando de leitura de arquivos. Utilizado na PROCEDURE DIVISION, geralmente numa rotina de leitura.
PROCEDURE: Nome da divisão de procedimentos. Esta contém a lógica do programa. Inicia na margem A(Coluna 8).
PIC: Cláusula de especificação dos formatos de campos, tamanho e valores inicias. Todo campo que possui PIC é chamado de campo elementar e os campos que não possuem são chamados grupo. A inicialização dos campos é facultativa, porém é uma boa prática para limpeza das áreas que serão utilizadas. Utilizado na DATA DIVISION. Abreviação de PICTURE.
OPEN: Comando de operação com arquivos. Ação de abertura de arquivos é obrigatória para leitura e gravação.
OCCURS: Cláusula de repetição de campos de tabelas. Indica quantas vezes o campos aparace na tabela.
MULTIPLY: Comando aritmético para operação de multiplicação de um mais operandos.
MOVE: Comando de manuseio de campos. Atribui o valor do campo ou literal de origem para o campo receptor(destino). Este comando não move, e sim faz uma cópia. Nessa operação o formato será convertido para o campo de destino, quando possível.
LOW-VALUE: Menor valor atribuído a uma variável. Zeros binários todos os bits desligados. Em hexadecimail é H'00'.
IF: Comando condicional de comparação e campos. Aconselhável para verificação do tipo Sim ou Não. Se verdadeiro faça isso Senão faça aquilo.
IDENTIFICATION: Nome da divisão de identificação. É a primeira divisão do COBOL. Atribui o nome do programa, autor, data de criação e comentários sobre a tarefa e características do programa. Inicia na margem A(Coluna 8).
HEADING: HIGH-VALUE: Maior valor atribuído a um campo com todos os bits ligados. Em hexa H'FF'. Usado para chaves de quebra e seqüência.
FILLER: Constante figurativa para identificar áreas ou pedaços de campos que não iremos referenciar na PROCEDURE.
ENVIRONMENT: Nome de divisão de ambiente que informa a máquina onde foi gerado o fonte e a máquina onde será executado o programa. Bem como os periféricos que serão usados no programa e suas características. Inicia na margem A(Coluna 8).
END-IF: Delimitador de escopo do comando IF. O uso do ponto tem feito essa função nas primeiras versões do COBOL. Assim coincidia com o fim de sentença. Atentar para os comandos NEXT SENTENCE.
END-ADD: Delimitador de escopo do comando ADD.
ELSE: Comando comparativo de negação do IF. Aconselhável para verificação do tipo Sim ou Não.
DIVISION: Palavra para identificação da divisões do COBOL. Inicia na margem A(Coluna 8).
DIVIDE: Comando aritmético para divisão de dois ou mais operandos.
DISPLAY: Comando de saída que exibe o conteúdo de variávies e literais.
DECIMAL-POINT: Constante figurativa de ambiente para o separador de casas decimais. Geralmente na seção de configuração alteramos para vírgula.
DATE: Função intrinsica do COBOL que acessa sistema operacional para obter a data-corrente da máquina.
DATA: Nome da divisão de dados. DATA DIVISION. Esta contém todos os campos que serão tratados na PROCEDURE. Todos os campos são de escopo global, ou seja, qualquer subrotina interna acessa todos os campos. Inicia na margem A(Coluna 8).
CORRESPONDING: Opção de movimentação de variáveis de grupo correspondendo aos campos elementares de mesmo nome para cada campo elementar de destino. EX: MOVE CORR DATA-US TO DATA-BR. Onde US é MMDDYYYY e BR é DDMMYYYY. Assim a data vira dia, mês e ano.
COPY: Cláusula de ação do compilador para inserir trechos de programas em tempo de compilação.
COMPUTE: Comando aritmético para cálculos entre dois ou mais operandos.
COMMA: Constante figurativa para representação a vírgula, separador de casas decimais para o sistema inglês. Para o português alteramos o ponto decimal para vírgulas.
CLOSE: Comando de tratamento de arquivos, utilizado para fechar o arquivo, liberando o dispositivo de I/O. Todo arquivo deve ser fechado quando o seu uso não for mais necessário.
CALL: Comando para acionamento de programas. O programa CHAMADOR transfere o fluxo de execução para o programa CHAMADO que pode retornar o fluxo para o CHAMADOR após seu término ou encerrar o trabalho. O COBOL aciona programas COBOL, Assembler, Linguagem C, rotinas de banco de dados como ADABAS, etc.

Inicio do Cobol

COBOL é uma linguagem de programação de Terceira Geração. Este nome é a sigla de COmmon Business Oriented Language (Linguagem Orientada aos Negócios), que define seu objetivo principal em sistemas comerciais, financeiros e administrativos para empresas e governos.

O COBOL foi criado em 1959 durante o CODASYL (Conference on Data Systems Language), um dos três comitês propostos numa reunião no Pentágono em Maio de 1959, organizado por Charles Phillips do Departamento de Defesa dos Estados Unidos. O CODASYL foi formado para recomendar as diretrizes de uma linguagem para negócios. Foi constituído por membros representantes de seis fabricantes de computadores e três órgãos governamentais, a saber: Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Rand, e Sylvania Electric Products, e a Força Aérea dos Estados Unidos, o David Taylor Model Basin e a Agência Nacional de Padrões (National Bureau of Standards ou NBS). Este comitê foi presidido por um membro do NBS. Um comitê de Médio Prazo e outro de Longo Prazo foram também propostos na reunião do Pentágono. Entretanto, embora tenha sido formado, o Comitê de Médio Prazo nunca chegou a funcionar; e o Comitê de Longo Prazo nem chegou a ser formado. Por fim, um subcomitê do Comitê de Curto Prazo desenvolveu as especificações da linguagem COBOL. Este subcomitê era formado por seis pessoas:

William Selden e Gertrude Tierney da IBM
Howard Bromberg e Howard Discount da RCA
Vernon Reeves e Jean E. Sammet da Sylvania Electric Products
Este subcomitê completou as especificações para o COBOL no fim do ano de 1959. Elas foram inspiradas em grande parte pela linguagem FLOW-MATIC inventada por Grace Hopper, e pela linguagem COMTRAN da IBM inventada por Bob Bemer.

As especificações foram aprovadas pelo CODASYL. A partir daí foram aprovadas pelo Comitê Executivo em Janeiro de 1960, e enviadas à gráfica do governo, que as editou e imprimiu com o nome de COBOL 60. O COBOL foi desenvolvido num período de seis meses, só que a primeira versão(COBOL 60), não durou muito tempo devido inúmeros erros que foram rapidamente corrigidos na versão COBOL 61 e foi base para os primeiros compiladores de COBOL. A versão COBOL 61 serviu como base para outra versão, que foi lançada em 1962 e foi nomeada de COBOL-61 - Versão Estendida, que contia novos elemento quando comparada com as versões anteriores.

Compiladores COBOL geralmente se baseavam no COBOL Padrão Nacional Americano(ANSI), que adotou o COBOL como uma linguagem padrão. Que teve seu primeiro padrão noticiado em 1968 e posteriormente em 1974, 1985 e 1989. A última revisão foi concluída em 2002.

Powered by Blogger