Viele Compiler bieten eine Option an, die es gestattet, bei der Übersetzung von Programmen einen shareable Teil zu erzeugen. Dieser muss nicht unbedingt in einem eigenen Objektmodul abgelegt werden, sondern kann zusammen mit dem nicht-shareable Teil in einem LLM stehen, der in einen Public und einen Private Slice unterteilt ist.
Folgende Objekte können shareable geladen werden:
shareable Module der Teilprogramme
Formate
ein Teil der Module für die Formatierung (falls shareable)
gemeinsam verwendbare Datenbereiche (Areas)
benötigte Datenbank-Verbindungsmodule, falls diese shareable sind
die Meldungsmodule
Module der Laufzeitsysteme der Programmiersprachen, die shareable sind (siehe Handbücher der einzelnen Programmiersprachen)
Wenn Teile eines Teilprogramms shareable sein sollen, so müssen Sie das bereits beim Programmieren berücksichtigen. Was Sie beim Programmieren beachten müssen, ist abhängig vom Compiler, der das Teilprogramm übersetzt. Näheres dazu finden Sie im openUTM-Handbuch „Anwendungen programmieren mit KDCS“ bzw. in der entsprechenden Sprachergänzung.
Mit COBOL-Compiler ist entweder COBOL85 oder COBOL2000 gemeint.
COBOL-Teilprogramme, die mit dem COBOL85-Compiler übersetzt werden, sind shareable, wenn Sie bei der Übersetzung die Option COMOPT GEN-SHARE-CODE=YES
angeben. Mit der Option COMOPT GEN-LLM=YES
veranlassen Sie den Compiler, die Objekte in einen LLM mit Slices abzulegen.
COBOL-Teilprogramme, die mit dem COBOL2000-Compiler übersetzt werden, sind shareable, wenn Sie bei der Übersetzung folgende Optionen angeben:
COMPILER-ACTION=*MOD-GEN(SHAREABLE-CODE=*YES, MODULE-FORMAT=*LLM,...)
C/C++-Teilprogramme sind shareable, wenn Sie beim Übersetzen die folgende Option angeben:
COMPILER-ACTION=MODULE-GENERATION(SHAREABLE-CODE=YES,...)
Die entsprechende Option in weiteren Programmiersprachen finden Sie in den zugehörigen Benutzerhandbüchern.
Außerdem werden auch viele Laufzeitsysteme der Programmiersprachen mit einem shareable Teil ausgeliefert.
Shared Code laden
Die shareable Programmteile brauchen für alle Tasks der Anwendung(en) gemeinsam nur einmal geladen werden. In den task-lokalen Speicher müssen dann nur noch die nicht-shareable Teile geladen werden.
Sie haben verschiedene Möglichkeiten, shareable Objekte zu laden:
in den Systemspeicher als nicht-privilegiertes Subsystem in den Klasse-3/4/5- oder 6-Speicher,
in einen von openUTM verwalteten Common Memory Pool im Benutzerspeicher (Klasse-6-Speicher).
Sehen Sie dazu auch das Handbuch „BS2000/OSD Verwaltung von Subsystemen (DSSM/SSCM)“.