COBOL - sub-rotinas


Advertisements

Em Cobol subrotina é um programa que pode ser compilado independente mas não pode ser executado independentemente. Há dois tipos de sub-rotinas: interno sub-rotinas como executar as declarações e externas CHAMADAS subrotinas como verbo.

Chamada Verbo

Chamada verbo é utilizado para transferir o controle de um programa para outro programa. O programa que contém o verbo é chamada a chamada Programa e o programa a ser chamado é conhecido como o chamado Programa. Programa chamada execução irá parar até que o chamado programa termina a execução. Sair do Programa declaração é usada no chamado programa de transferir o controle para trás.

Denominado Programa Restrições

Seguem-se os chamados requisitos do programa:

  • Articulação seção devem ser definidos no chamado programa. É composto de elementos de dados transmitidos no programa. Os itens de dados não deve ter valor cláusula. PIC cláusula deve ser compatível com as variáveis passadas através do chamado programa.

  • Procedimento divisão usando possui uma lista de variáveis passadas do programa e pedir a encomenda deve ser mesmo mencionado no convite verbo.

  • Sair do programa declaração é usada no chamado programa de transferir o controle para trás. Ela deve ser a última declaração do chamado programa.

Os parâmetros podem ser passados entre programas de duas maneiras:

  • Por referência
  • Pelo conteúdo

Chamada por referência

Se os valores das variáveis no chamado programa são alteradas, em seguida, seus novos valores irão refletir no chamado programa. Se a cláusula não é especificado, então, as variáveis são sempre passados por referência.

Sintaxe

Sintaxe é a seguinte rotina de chamadas por referência:

CALL sub-prog-name USING variable-1, variable-2.

Exemplo

Exemplo A seguir é a chamada PRINCIPAL programa e UTIL é o chamado programa:

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-STUDENT-ID PIC 9(4) VALUE 1000.
   01 WS-STUDENT-NAME PIC A(15) VALUE 'Tim'.

PROCEDURE DIVISION.
   CALL 'UTIL' USING WS-STUDENT-ID, WS-STUDENT-NAME.
   DISPLAY 'Student Id : ' WS-STUDENT-ID
   DISPLAY 'Student Name : ' WS-STUDENT-NAME
STOP RUN.

Denominado Programa

IDENTIFICATION DIVISION.
PROGRAM-ID. UTIL.

DATA DIVISION.
   LINKAGE SECTION.
   01 LS-STUDENT-ID PIC 9(4).
   01 LS-STUDENT-NAME PIC A(15).

PROCEDURE DIVISION USING LS-STUDENT-ID, LS-STUDENT-NAME.
   DISPLAY 'In Called Program'.
   MOVE 1111 TO LS-STUDENT-ID.
EXIT PROGRAM.

JCL para executar o programa em COBOL:

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

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

In Called Program
Student Id : 1111
Student Name : Tim

Chamada por conteúdo

Se os valores das variáveis no chamado programa são alteradas, em seguida, os novos valores não irão refletir na chamada do programa.

Sintaxe

Sintaxe é a seguinte rotina de chamadas por conteúdo:

CALL sub-prog-name USING 
BY CONTENT variable-1, BY CONTENT variable-2.

Exemplo

Exemplo A seguir é a chamada PRINCIPAL programa e UTIL é o chamado programa:

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-STUDENT-ID PIC 9(4) VALUE 1000.
   01 WS-STUDENT-NAME PIC A(15) VALUE 'Tim'.

PROCEDURE DIVISION.
   CALL 'UTIL' USING BY CONTENT WS-STUDENT-ID, BY CONTENT WS-STUDENT-NAME.
   DISPLAY 'Student Id : ' WS-STUDENT-ID
   DISPLAY 'Student Name : ' WS-STUDENT-NAME
STOP RUN.

Denominado Programa

IDENTIFICATION DIVISION.
PROGRAM-ID. UTIL.

DATA DIVISION.
   LINKAGE SECTION.
   01 LS-STUDENT-ID PIC 9(4).
   01 LS-STUDENT-NAME PIC A(15).

PROCEDURE DIVISION USING LS-STUDENT-ID, LS-STUDENT-NAME.
   DISPLAY 'In Called Program'.
   MOVE 1111 TO LS-STUDENT-ID.
EXIT PROGRAM.

JCL para executar o programa em COBOL:

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

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

In Called Program
Student Id : 1000
Student Name : Tim

Os Tipos de Chamada

Há dois tipos de chamadas.

  • Chamada estática ocorre quando um programa é compilado com a opção de compilação NODYNAM. A static chamado programa é carregado no armazenamento em tempo de compilação.

  • Chamada dinâmica ocorre quando um programa é compilado com o compilador NODLL e DYNAM opção. Uma dinâmica denominada programa é carregado no armazenamento em runtime.

Advertisements