Externe Unterprogramme

Neben den internen Unterprogrammen kann man sich in Cobol auch mit externen Unterprogrammen die Programmierung gerade von komplexen Anwendungen wesentlich erleichtern. Dabei unterscheiden sich externe von internen Unterprogrammen hauptsächlich dadurch, daß interne Unterprogramme mit dem Hauptprogramm übersetzt werden, da sie Bestandteile desselben Codings sind. Externe Unterprogramme werden gesondert übersetzt.
Oft werden dieselben Routinen von mehreren Programmen verwendet - da wäre es wenig sinnvoll, in all' diesen Programmen ein und dieselbe Routine immer und immer wieder zu codieren (Fleißpunkte werden in der Regel nicht vergeben...).
Daneben kann durch die Anlage von externen Unterprogrammen auch eine Modularisierung von Programmstrukturen erreicht werden, was die Pflege und Übersichtlichkeit solcher Programmstrukturen erheblich erleichtert.
Ein weiterer wichtiger Vorteil ergibt sich aus der effektiven Speicherauslastung, die mit Hilfe der Speicherverwaltung von Cobol erreicht wird. So kann gezielt bestimmt werden, wann welcher Speicherbereich von welchen Daten oder Unterprogrammen belegt und wieder freigegeben wird.
Man spricht von aufrufenden und aufgerufenen Programmen. Dabei wird dem aufgerufenen Programm die Steuerung vom aufrufenden übergeben. Dies geschieht mit Hilfe der CALL-Anweisung. Ist das aufgerufene Programm dann abgelaufen, wird die Steuerung wieder an das aufrufende Programm übertragen.
Es ist dabei möglich, daß das aufgerufene Programm zugleich auch ein aufrufendes welches ist. Man spricht dann von 'geschachtelten Programmaufrufen'. Die Steuerung wechselt dabei vom Hauptprogramm auf das erste Unterprogramm, welches wiederum die Steuerung an ein zweites Unterprogramm überträgt. Ist dieses zweite Programm abgelaufen, so wird die Steuerung wieder an das erste Unterprogramm übergeben, das sie wiederum an das Hauptprogramm zurück gibt.
Es liegt auf der Hand, daß bei der Konstruktion solcher 'Programmverbünde' sowohl im aufrufenden als auch im aufgerufenen Programm einiges zu beachten ist. Für das aufrufende Programm gilt es dabei die CALL-Anweisung, die CANCEL-Anweisung und die CHAIN-Anweisung zu kennen.
Im aufgerufenen Programm muß die LINKAGE SECTION, der USING-Zusatz in der PROCEDURE DIVISION sowie der EXIT PROGRAMM-Befehl beachtet werden.

...