COBOL - Estrutura do Programa

A estrutura de um programa COBOL consiste em divisões, conforme mostrado na imagem a seguir -

Uma breve introdução dessas divisões é fornecida abaixo -

  • Sectionssão a subdivisão lógica da lógica do programa. Uma seção é uma coleção de parágrafos.

  • Paragraphssão a subdivisão de uma seção ou divisão. É um nome definido pelo usuário ou predefinido seguido por um ponto e consiste em zero ou mais sentenças / entradas.

  • Sentencessão a combinação de uma ou mais declarações. As sentenças aparecem apenas na divisão Procedimento. Uma frase deve terminar com um ponto final.

  • Statements são instruções COBOL significativas que executam algum processamento.

  • Characters são os mais baixos na hierarquia e não podem ser divisíveis.

Você pode co-relacionar os termos mencionados acima com o programa COBOL no seguinte exemplo -

PROCEDURE DIVISION.
A0000-FIRST-PARA SECTION.
FIRST-PARAGRAPH.
ACCEPT WS-ID            - Statement-1  -----|
MOVE '10' TO WS-ID      - Statement-2       |-- Sentence - 1
DISPLAY WS-ID           - Statement-3  -----|
.

Divisões

Um programa COBOL consiste em quatro divisões.

Divisão de Identificação

É a primeira e única divisão obrigatória de todo programa COBOL. O programador e o compilador usam essa divisão para identificar o programa. Nesta divisão, PROGRAM-ID é o único parágrafo obrigatório. PROGRAM-ID especifica o nome do programa que pode consistir de 1 a 30 caracteres.

Experimente o seguinte exemplo usando o Live Demo opção online.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'Welcome to Tutorialspoint'.
STOP RUN.

Dado abaixo é o JCL para executar o programa COBOL acima.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Quando você compila e executa o programa acima, ele produz o seguinte resultado -

Welcome to Tutorialspoint

Divisão de Meio Ambiente

A divisão de ambiente é usada para especificar arquivos de entrada e saída para o programa. Consiste em duas seções -

  • Configuration sectionfornece informações sobre o sistema no qual o programa é escrito e executado. Consiste em dois parágrafos -

    • Computador de origem - Sistema usado para compilar o programa.

    • Computador objeto - Sistema usado para executar o programa.

  • Input-Output sectionfornece informações sobre os arquivos a serem usados ​​no programa. Consiste em dois parágrafos -

    • Controle de arquivo - Fornece informações de conjuntos de dados externos usados ​​no programa.

    • Controle IO - Fornece informações sobre os arquivos usados ​​no programa.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
   SOURCE-COMPUTER. XXX-ZOS.
   OBJECT-COMPUTER. XXX-ZOS.

INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT FILEN ASSIGN TO DDNAME
   ORGANIZATION IS SEQUENTIAL.

Divisão de Dados

A divisão de dados é usada para definir as variáveis ​​usadas no programa. Consiste em quatro seções -

  • File section é usado para definir a estrutura de registro do arquivo.

  • Working-Storage section é usado para declarar variáveis ​​temporárias e estruturas de arquivo que são usadas no programa.

  • Local-Storage sectioné semelhante à seção Working-Storage. A única diferença é que as variáveis ​​serão alocadas e inicializadas toda vez que um programa iniciar a execução.

  • Linkage section é usado para descrever os nomes de dados que são recebidos de um programa externo.

COBOL Program

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT FILEN ASSIGN TO INPUT.
      ORGANIZATION IS SEQUENTIAL.
      ACCESS IS SEQUENTIAL.

DATA DIVISION.
   FILE SECTION.
   FD FILEN
   01 NAME PIC A(25).
   
   WORKING-STORAGE SECTION.
   01 WS-STUDENT PIC A(30).
   01 WS-ID PIC 9(5).

   LOCAL-STORAGE SECTION.
   01 LS-CLASS PIC 9(3).
   
   LINKAGE SECTION.
   01 LS-ID PIC 9(5).
   
PROCEDURE DIVISION.
   DISPLAY 'Executing COBOL program using JCL'.
STOP RUN.

o JCL para executar o programa COBOL acima é o seguinte -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//INPUT DD DSN = ABC.EFG.XYZ,DISP = SHR

Quando você compila e executa o programa acima, ele produz o seguinte resultado -

Executing COBOL program using JCL

Divisão de Procedimento

A divisão de procedimento é usada para incluir a lógica do programa. Consiste em instruções executáveis ​​usando variáveis ​​definidas na divisão de dados. Nesta divisão, os nomes dos parágrafos e seções são definidos pelo usuário.

Deve haver pelo menos uma instrução na divisão do procedimento. A última declaração para encerrar a execução nesta divisão éSTOP RUN que é usado nos programas de chamada ou EXIT PROGRAM que é usado nos programas chamados.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-NAME PIC A(30).
   01 WS-ID PIC 9(5) VALUE 12345.

PROCEDURE DIVISION.
   A000-FIRST-PARA.
   DISPLAY 'Hello World'.
   MOVE 'TutorialsPoint' TO WS-NAME.
   DISPLAY "My name is : "WS-NAME.
   DISPLAY "My ID is : "WS-ID.
STOP RUN.

JCL para executar o programa COBOL acima -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Quando você compila e executa o programa acima, ele produz o seguinte resultado -

Hello World
My name is : TutorialsPoint
My ID is : 12345