Zitat Zitat von Fuerchau Beitrag anzeigen
Eine COBOL-Subroutine kann von außen nicht direkt aufgerufen werden.
COBOL hat nicht dieselbe Unterstützung bzgl. der Prozeduren wie ILERPG.

SQL erlaubt jedoch, jedes beliebige Hauptprogramm per Call mit Parametern aufzurufen.
Diese sind in COBOL dann in der Linkage-Section passend zu definieren und abzufragen.

Aber besser ist es auf jeden Fall, eine SQL-Prozedur als externe Prozedur mit passenden Aufrufkonventionen zu erstellen. Diese externe Prozedur darf dann wiederum ein anderes Hauptprogramm gerne aufrufen. Das nennt man dann Wrapper-Programm.

Um eine Prozedur eines Programmes aufzurufen, bedarf es für SQL der Registrierung einer Prozedur in einem Service-Programm.
Dies ist auch in COBOL möglich, wenn man ein COBOL-Modul erstellt und dieses dann in ein Service-Programm verpackt.

Die typische Subroutiene in COBOL wird mit PERFORM aufgerufen und entspricht im RPG der EXSR-Anweisung. Dahinter verbirgt sich nur leider kein CALL sondern ein GOTO mit einem Return, der wie ein "go to ." und einem passenden "Alter Label to proceed to" wirkt.
Daher ist ein Perform auch nicht rekursiv aufrufbar.
Beim Versuch der Erstellung einer externen Stored Procedure mit LANGUAGE COBOL hat es im ersten Effekt daran gescheitert das ich nicht mehr als 29 Parameter festlegen konnte. Zum Aufruf des Programmes sind mindestens 49 IN Parameter notwendig. Dies ist auch unabhängig von der Größe des Datenfeldes bei 29 war Schluß .. Liege ich da richtig oder ist der Layer 8 das Problem?