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
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.
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:
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.
Es folgt die Syntax der Aufruf Unterprogramm mit Hinweisen:
CALL sub-prog-name USING variable-1, variable-2.
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
Wenn die Werte der Variablen in der aufgerufenen Programms modifiziert werden, dann ihre neuen Werte werden nicht in das aufrufende Programm zu reflektieren.
Es folgt die Syntax der Aufruf Unterprogramm durch den Inhalt:
CALL sub-prog-name USING BY CONTENT variable-1, BY CONTENT variable-2.
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
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.