Menu

COBOL - Verbos Básicos


A divisão Procedure contém o código utilizado para realizar a manipulação dos dados descritos na Divisão de Dados.

A divisão de procedimento usa verbos COBOL para processamento de dados. Uma instrução sempre inicia com um verbo COBOL.

No COBOL, existem vários verbos com diferentes tipos de ações. Vamos ver alguns deles agora,


ACCEPT:
A instrução ACCEPT é usada para adquirir dados do dispositivo de entrada principal ou de vários campos do sistema. Cada um dos dois formatos funciona de forma ligeiramente diferente e é descrito na área numerada correspondente.

Syntax - Formato 1:

image missing

Este formato é usado para aceitar dados da entrada primária ou outro dispositivo especificado. Os campos listados após ACCEPT são carregados.

Syntax - Formato 2:

image missing

Este formato é usado para aceitar um dos vários valores do sistema. Cada um dos itens a serem aceitos tem um formato diferente.

Tipos:
  • Use a instrução ACCEPT para adquirir pequenas quantidades de dados, como parâmetros a serem inseridos em tempo de execução.

  • A principal vantagem de adquirir dados com a instrução ACCEPT é que nenhum arquivo precisa ser estabelecido para usá-los.

  • A principal desvantagem de adquirir dados com a instrução ACCEPT é que não há mecanismo para reconhecer o fim do arquivo.

  • Muitos COBOLs adicionaram melhorias para permitir o acesso a um ano de quatro dígitos devido ao problema Y2K. Verifique o manual do sistema para obter detalhes.

DISPLAY:
A instrução DISPLAY é usada para exibir dados no dispositivo de saída principal. Os campos listados após DISPLAY são exibidos.

Syntax - Formato:

DISPLAY identifier [upon{mnemonic-name-1/environment name}] [WITH NO ADVANCING]

Tips:
  • Use a instrução DISPLAY para exibir pequenas quantidades de dados, como mensagens de erro.

  • A principal vantagem de exibir dados com a instrução DISPLAY é que nenhum arquivo precisa ser estabelecido para usá-los.

  • A principal desvantagem de exibir dados com a instrução DISPLAY é que não há mecanismo para fornecer controle de carro.
Display: Regras
  • Identificador-1 é convertido automaticamente para formato externo, se necessário
  • Valores com sinal negativo causam um sinal de baixa ordem sobre o soco
  • Os ponteiros são convertidos em um PIC 9(10) externo
  • Os nomes INDEX não podem ser especificados

INITIALIZE:
A instrução INITIALIZE é usada para inicializar itens de dados. Os itens de dados são inicializados de acordo com seu tipo.

Syntax:

image missing
  • Itens alfabéticos e alfanuméricos são inicializados com espaços.

  • Os itens numéricos são inicializados com zeros.

  • Para itens de grupo, os itens elementares subordinados são inicializados dependendo de seus tipos de dados individuais. Apenas itens nomeados são inicializados.

  • A frase REPLACING pode ser usada para inicializar itens de dados com valores diferentes do padrão SPACES ou ZEROS.
Tipos:
  • Use a instrução de inicialização em vez de mover ZEROS ou ESPAÇOS para um grupo. Dessa forma, cada item subordinado será definido com um valor apropriado.

  • Observe que os itens sem nome e FILLER não são inicializados. Isso permite que a parte variável de uma linha de detalhe, por exemplo, seja inicializada sem que os valores constantes inseridos nos campos sem nome sejam afetados.

MOVE:
A instrução MOVE é usada para copiar itens de dados para outros itens de dados. Abaixo de dois formatos funciona um pouco diferente e é descrito abaixo também.

SYNTAX 1:

MOVE {Identifer-1/Litera-1} TO {Identifier-2....} 

O formato é usado para copiar um campo ou valor para outros field(s). O campo ou valor listado entre MOVE e TO é copiado para o valor do field(s) following para TO.

Por exemplo, em MOVE A TO B, o valor em A é copiado para B. O valor em A permanece inalterado. Além disso, em MOVE C TO EF, os valores em C são movidos para o valor em E, armazenando a resposta em E e o valor de C também é movido para F armazenando a resposta em F. O valor em C permanece inalterado.

SYNTAX 2:

MOVE {CORRESPONDING/CORR} Identifer-1 TO {Identifier-2.....} 

O formato é usado para copiar field(s) subordinado(s) de um grupo para field(s) subordinado(s) em outro. Esses campos subordinados do identificador de item de grupo-1 são copiados e aqueles com exatamente o mesmo nome no identificador de item de grupo-2. Os nomes dos itens subordinados devem ser escritos exatamente da mesma forma no bot para participar do movimento.

Coisas para lembrar:
  • Se o campo de recebimento for editado, qualquer edição necessária será feita no momento do MOVIMENTO.

  • Se o campo de recebimento não for editado e o campo de envio for editado, o campo será deseditado no momento do MOVE.

  • Se o campo de envio for menor que o campo de recebimento:
    • Os campos numéricos são preenchidos à esquerda com ze

    • Os campos não numéricos são preenchidos à direita com espaços.

  • Se o campo de envio for maior que o campo de recebimento:

    • Os campos numéricos são truncados à esquerda.
    • Os campos não numéricos são truncados à direita.

Uso de CORRESPONDING na declaração MOVE
  • Ambos os identificadores devem ser itens de grupo.

  • Ambos os identificadores que seguem a palavra-chave CORRESPONDING devem nomear os itens do grupo. Nesta discussão, esses identificadores são referidos como identificador-1 e identificador-2.

  • Um par de itens de dados (itens subordinados), um do identificador-1 e um do identificador-2, correspondem se as seguintes condições forem verdadeiras:

  • Em uma instrução MOVE, pelo menos um dos itens de dados é um item elementar e a movimentação é permitida pelas regras de movimentação.

  • Os itens subordinados não são identificados pela palavra-chave FILLER.

  • Nem o identificador-1 nem o identificador-2 são descritos como um item de nível 66, 77 ou 88, nem são descritos como um item USAGE IS INDEX. Nem o identificador-1 nem o identificador-2 podem ser modificados por referência.

  • Os itens subordinados não incluem uma cláusula REDEFINES, RENAMES, OCCURS ou USAGE IS INDEX em suas descrições.

  • No entanto, identificador-1 e identificador-2, eles podem conter ou ser subordinados a itens que contenham uma cláusula REDEFINES ou OCCURS em suas descrições.

  • Nem o identificador-1 nem o identificador-2 nem os dois itens subordinados são descritos como itens USAGE IS POINTER.

  • Identificador-1 e/ou identificador-2 podem ser subordinados a um item FILLER.

Movimentos Elementares Válidos e Inválidos:
image missing
  1. Inclui itens de dados DBCS.

  2. Inclui literais não numéricos.

  3. Constantes figurativas e literais não numéricos devem consistir apenas em caracteres numéricos e serão tratados como campos numéricos inteiros.

  4. Constantes figurativas e literais não numéricos devem consistir apenas em caracteres numéricos e serão tratados como campos numéricos inteiros. O literal ALL não pode ser usado como um item de envio.

  5. Inclui literais numéricos inteiros.

  6. Inclui literais numéricos não inteiros (por exemplo, 3.142).

  7. Inclui literais de ponto flutuante, itens de dados de ponto flutuante externos (USAGE DISPLAY) e itens de dados de ponto flutuante internos (USAGE COMP-1 ou USAGE COMP-2).

  8. Inclui itens de dados DBCS, literais DBCS e SPACE.

Muitas vezes é necessário mover alguns dos itens de dados de um grupo para algum outro item de dados de outro grupo. Se os nomes dos itens de dados correspondentes forem distintos, as instruções MOVE separadas devem ser usadas. Mas se os itens de dados correspondentes tiverem nomes idênticos, em vez de instruções MOVE separadas, MOVE CORRESPONDING pode ser usado.

Exemplo:
image missing

Neste exemplo, o ID-NUMBER, NAME, DEPARTMENT, BASIC-PAY de PAY-REC será movido para o mesmo item de dados de PRINT-REC.

Isso é equivalente a 4 instruções de movimento.

MOVE ID-NUMBER OF PAY-REC TO ID-NUMBER OF PRINT-REC.
MOVE NAME OF PAY-REC TO NAME OF PRINT-REC.
MOVE DEPARTMENT OF PAY-REC TO DEPARTMENT OF PRINT-REC.
MOVE BASIC-PAY OF PAY-REC TO BASIC-PAY OF PRINT-REC.

STOP RUN:

STOP RUN é a última instrução executável no programa que retornará o controle de volta ao sistema operacional.

STOP RUN sempre codificado no programa principal.

Se STOP RUN estiver codificado no subprograma, o controle retornará ao sistema operacional em vez de retornar ao programa principal. Neste caso, a tarefa restante codificada no programa principal estará incompleta.

STOP RUN fecha todos os arquivos abertos no programa.

Quando o STOP RUN for executado, imediatamente todas as tarefas em execução pelo programa serão fechadas e o controle será transferido para o SO.

Syntax - Formato:

STOP {RUN/literal-1}

STOP RUN encerra o programa. O literal STOP exibe o literal e aguarda uma resposta antes de continuar com a próxima instrução executável.

STOP RUN sempre termina a execução do programa atual, independentemente do tipo de programa (programa principal ou subprograma).

Tips:
  1. Use a instrução STOP RUN para encerrar a execução de um programa.

  2. Não use a instrução STOP RUN em um subprograma chamado, pois isso causará o término de toda a unidade de execução. Em vez disso, para encerrar a execução de um subprograma, use a instrução EXIT PROGRAM.

Vejamos um exemplo de como os verbos usados ​​no programa COBOL,

 IDENTIFICATION DIVISION.
 PROGRAM-ID. TSTVERBS.
 ENVIRONMENT DIVISION.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 INPUT-AGE                 PIC 9(03).
 01 INPUT-GENDER              PIC X(01).
 01 AGE                       PIC 9(03) VALUE ZEROES.
 01 GENDER                    PIC X(01) VALUE SPACES.
 PROCEDURE DIVISION.
     INITIALIZE INPUT-AGE
                INPUT-GENDER.     ----> Good to initilize the variable before use it. or
                                        we can declare VALUE Clause(see AGE & GENDER in working storage section)
     ACCEPT INPUT-AGE.            ----> Value shoud be passed from JCL
     ACCEPT INPUT-GENDER.         ----> Value shoud be passed from JCL

     MOVE INPUT-AGE TO AGE.       ----> Passing value from INPUT-AGE to AGE variable.
     MOVE INPUT-GENDER TO GENDER. ----> Passing value from INPUT-GENDER to GENDER variable.

     DISPLAY AGE.                 ----> Write the AGE value to output.
     DISPLAY GENDER.              ----> Write the GENDER value to output.

     STOP RUN.                    -----> Returns the control back to OS
  

Agora é hora de ver o programa COBOL "Hello World" no próximo capítulo.