COBOL - Unterprogramme



Cobol Subroutine ist ein Programm, das unabhängig zusammengestellt werden können, jedoch nicht unabhängig voneinander ausgeführt werden. Es gibt zwei Arten von Unterprogrammen:. interne Unterprogramme wie Ausführen Abschluss und externen Unterprogrammen wie CALL Verb

Rufen Verb

Anruf Verb verwendet, um die Steuerung von einem Programm zu einem anderen Programm zu übertragen. Das Programm, das die CALL Verb enthält, ist das Aufruf Programm und das Programm aufgerufen wird als Genannt Programm bekannt . Der Aufruf der Programmausführung wird angehalten, bis das aufgerufene Programm erledigt den Auftrag. Programm beenden Anweisung im aufgerufenen Programm verwendet, um die Kontrolle zurück zu übertragen.

Genannt Programm Constraints

Im Folgenden werden die genannten Programmanforderungen:

  • Bereich Verknüpfung muss im aufgerufenen Programm definiert werden. Es besteht aus Datenelementen in dem Programm übergeben. Die Datenelemente sollten nicht Wert Klausel. PIC-Klausel muss mit den Variablen durch das aufrufende Programm übergeben kompatibel sein.

  • Vorgehen Division mit hat eine Liste von Variablen aus dem aufrufenden Programm und die Reihenfolge muss gleich sein übergeben als im Call Verb erwähnt.

  • Programm beenden Anweisung im aufgerufenen Programm verwendet, um die Kontrolle zurück zu übertragen. Es muss die letzte Anweisung im aufgerufenen Programm sein.

Die Parameter können zwischen Programmen auf zwei Arten übergeben werden:

  • Mit dem Reference
  • Mit dem Inhalt

Aufruf über Referenz

Wenn die Werte der Variablen in der aufgerufenen Programms modifiziert werden, dann die neuen Werte werden in das aufrufende Programm zu reflektieren. Falls BY Klausel nicht angegeben ist, dann Variablen werden immer als Referenz übergeben.

Syntax

Es folgt die Syntax der Aufruf Unterprogramm mit Hinweisen:

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

Beispiel

Nach Beispiel ist der MAIN aufrufende Programm und UTIL ist das aufgerufene Programm:

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.

genannt Programm

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 oben COBOL-Programm zu ausführen:

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

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

In Called Program
Student Id : 1111
Student Name : Tim

Aufruf über Inhalt

Wenn die Werte der Variablen in der aufgerufenen Programms modifiziert werden, dann ihre neuen Werte werden nicht in das aufrufende Programm zu reflektieren.

Syntax

Es folgt die Syntax der Aufruf Unterprogramm durch den Inhalt:

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

Beispiel

Nach Beispiel ist der MAIN aufrufende Programm und UTIL ist das aufgerufene Programm:

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.

genannt Programm

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 oben COBOL-Programm zu ausführen:

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

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

In Called Program
Student Id : 1000
Student Name : Tim

Arten der Anruf

Es gibt zwei Arten von Anrufen:

  • Static Anruf tritt auf, wenn ein Programm mit dem NODYNAM Compiler-Option kompiliert. Eine statische aufgerufene Programm in den Speicher bei der Kompilierung geladen.

  • Dynamische Anruf tritt auf, wenn ein Programm mit dem DYNAM und NODLL Compiler-Option kompiliert. Eine dynamische aufgerufene Programm in den Speicher zur Laufzeit geladen.

Advertisements