Frage

Auf dem Mainframe mit Enterprise Cobol für z / OS, ist es möglich, eine Cobol dyamic Link Library (DLL) Programm von einem COBOL-Programm dynamisch aufrufen, die mit NODLL kompiliert wurde?

War es hilfreich?

Lösung

Es gibt eine Reihe von Möglichkeiten zu tun, was Sie wollen.

Wenn durch dynamisch aufrufen, meinen Sie über eine Datendefinition Variable nennen, ich glaube nicht, dass Sie dies mit dem Linker / Bindemittel tun können, da das Bindemittel die Zielfunktionen beim Binden wissen muss.

Sie haben speziell die DLL-Lademodul dllload, die Funktion dllqueryfn und es auf diese Weise nennen.

den Linker / Bindemittel zu verwenden, glaube ich, sind folgende Schritte erforderlich (P1 ist das NODLL COBOL-Programm der Berufung zu tun, P2 ist das DLL Programm wird genannt):

  • P2 muss mit der DLL Option kompiliert und gebunden werden.
  • P1 muss mit NODYNAM und gebunden mit DLL kompiliert werden.
  • P1 muss enthalten CALL 'dll-func' (das heißt, wörtliche Anrufe).
  • Wenn die Bindung P1, SYSLIB muss erster Punkt auf die P2 Lage.

Dies bewirkt, dass das Bindemittel sowohl P1 und P2 in ein einziges Lademodul zu integrieren, die nicht genau nennen DLL ist, aber ich glaube nicht, dass es eine Möglichkeit, um diese andere als die dllload/dllqueryfn Lösung.

Ich habe die Altart dll-Funktionen verwendet, aber, wenn Sie bei einem ausreichend hohen Niveau sind, dann gibt es auch die neueren dlopen/dlsym C Helferfunktionen.

Diese Seite bietet eine weitere Möglichkeit, in dem Sie das DLL-Programm in das gleiche Lademodul wie das rufende Programm und verwenden Sie einen statischen Aufruf setzen können, um es zu bekommen. Es scheint, dass das DLL-Programm aufrufen können andere DLL-Programme nicht in diesem Lademodul. So kann es möglich sein, eine statische Gateway-Funktion in dem DLL-Programm zur Verfügung zu stellen, die dynamisch eine DLL-Funktion nicht im Lademodul aufrufen kann. Dies ist als alles, was ich je auf der großen Eisen getan haben, so werden Sie experimentieren müssen.

Diese beiden Seiten sind von den publib-boulder-Site, die alle mit einem IBM Produkt wissen sollte (zusammen mit der redbooks / redpapers Website als auch).

Me, ziehe ich die dllload/dllqueryfn Lösung, da das ist, was ich von AIX gewohnt bin und andere UNIX-Varianten und es scheint, ein Höchstmaß an Flexibilität zu bieten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top