Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

COBOL Grundkurs

Externe Unterprogramme aufrufen in COBOL

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Bei umfangreicheren Programmen muss man eine Modularisierung vornehmen. Selbst interne Unterprogramme, die mit PERFORM ausgeführt werden, oder GO-TO-Anweisungen sind da in der Regel nicht mehr ausreichend. Mit dem Verb CALL können Sie externe Unterprogramme aufrufen, die jedoch in besonders kompilierter Form vorliegen und einen spezifischen Aufbau haben müssen. An solche Unterprogramme kann man Daten per Call-by-Reference oder Call-by-Value übergeben.

Transkript

Wenn COBOL-Programme umfangreicher werden, ist es unabdingbar, dass man sogenannte Unterprogramme erstellt oder auch Subroutinen genannt. Das sind Programm-Bestandteile, die nicht eigenständig ausgeführt werden können, aber von COBOL-Programmen aufgerufen werden. Dazu gibt es die CALL-Anweisung, die zu den wichtigsten Anweisungen in COBOL überhaupt zählt. Es gibt zwei verschiedene Arten von Unterprogrammen, die sogenannten Internen, das sind Abschnitte im Code, die einfach angesprungen werden und eben besagte Subroutinen als externe Unterprogramme, die mit "CALL" aufgerufen werden. In diesem Beispiel sehen Sie hier so einen CALL-Aufruf. Sie geben mit "CALL" den Namen der Subroutine an und dann, was Sie aus dieser Subroutine möglicherweise verwenden wollen; Übergabewerte an das Subprogramm, Rückgabewerte, solche Dinge spezifiziert man hier. Der grundsätzliche Programmablauf ist nun so, dass das Hauptprogramm sequenziell abgearbeitet wird und sobald so eine CALL-Anweisung auftaucht, wird der Programmfluss zum Unterprogramm übergeben, Sie sehen das hier in der gesplitteten Ansicht auf der rechten Seite, und sobald dieses fertig ist, geht der Programmfluss hier im Hauptprogramm weiter. Das ist so ähnlich, wie bei einer GOTO-Anweisung, wo man wieder zurückspringt oder bei einer PERFORM-Anweisung. Bei einer PERFORM-Anweisung nutzt man aber nur interne Subroutinen, Absätze, Abschnitte. Nun gibt es für den Aufruf von Subroutinen über "CALL" sogenannte Call-by-Reference- und Call-by-Value-Aufrufe. Aufrufe über eine Referenz oder Aufrufe über Inhalt beziehungsweise Wert. Bei einem Aufruf über den Wert, also Call-by-Value, werden übergebene Werte in dem Unterprogramm, sofern sie modifiziert werden, in dem original aufrufenden MAIN-Programm nicht modifiziert. Bei Call-by-Reference ist das der Fall. Das Beispiel, was ich jetzt hier habe, arbeitet mit Call-by-Reference, aber Call-by-Value funktioniert ziemlich ähnlich. Sie müssen dann nur noch hier hinter "USING" "BY CONTENT" notieren. Gehen wir jetzt mal an die Details dieser beiden Programme hier. Im Grunde ist das ein normales COBOL-Programm, was sich nicht sonderlich auszeichnet, mit Ausnahme der Zeile 14, wo so ein "CALL" auf ein externes Unterprogramm steht. Darüber haben wir uns eben schon unterhalten. Ich gebe etwas aus, dann mache ich diesen "CALL", dann gebe ich wieder etwas aus, aber das Entscheidende ist, dass die Werte, die ich hier ausgebe, nicht die sein werden, die Sie hier oben sehen. Ich habe hier eine Studenten-ID 1000, aber die Ausgabe hier wird 1111 sein. Grund ist, ich verändere im Unterprogramm, da ich hier Call-by-Reference habe, den Wert dieses Feldes. Das Unterprogramm selbst beinhaltet jetzt eine Besonderheit gegenüber einem normalen COBOL-Programm. Sie haben hier eine Verknüpfungssektion und die Verbindung von meiner "WS-STUDENT-ID" zu "LS-STUDENT-ID" und "WS-STUDENT-NAME" zu "LS-STUDENT-NAME" ist offensichtlich. Das heißt hier werden die Verknüpfung der Felder vorgenommen, die ich im Unterprogramm jetzt manipulieren möchte, mit denen ich arbeiten möchte. Rufen wir das Programm mal auf, allerdings möchte ich zuerst kompilieren -- bewusst. Beim Kompilieren des Hauptprogramms ist eigentlich nichts zu beachten. Sofern keine Fehler im Quellcode vorliegen, wird das kompiliert. Allerdings wenn ich jetzt das Programm aufrufe, dann wird es in diesem Fall einen Fehler geben, denn das Hauptprogramm muss das Unterprogramm in kompilierter Form finden, in lauffähiger Form, und das habe ich jetzt noch nicht kompiliert. Kompiliere ich auch dieses hier und jetzt erhalten Sie einen Fehler, dass da irgendein Problem vorliegt. Der Grund ist, dieses Unterprogramm ist kein eigenständig lauffähiges Programm, sondern das ist im Falle hier des Windows-Systems eine DLL und die wird kompiliert ohne diesen Parameter "-x". Für andere Betriebsysteme kommen andere lauffähige Unterprogramme in Maschinencode raus. In meinem Fall eine DLL, weil ich, wie gesagt, unter Windows arbeite. Und jetzt kann ich das Hauptprogramm aufrufen und Sie sehen, bei der Ausgabe taucht die Zahl 1111 auf. Und das ist der geänderte Wert im Unterprogramm und nicht der Wert, den ich ursprünglich im Hauptprogramm initialisiert habe. Sie haben also gesehen, dass man in COBOL mit der Anweisung "CALL" Unterprogramme aufrufen kann und man muss grundsätzlich unterscheiden, ob man Call-by-Value oder Call-by-Reference durchführt, das hat Konsequenzen für die übergebenen, für die verknüpften Felder, ob die sich im Hauptprogramm ändern oder nicht.

COBOL Grundkurs

Lernen Sie die Programmiersprache COBOL mit ihren Grundfunktionen kennen und schreiben Sie eigene Programme.

3 Std. 4 min (45 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:21.11.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!