Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Gemeinsam benutzbare C/C++-Programme

&pagelevel(4)&pagelevel

Bei großen Programmen kann es von Vorteil sein, einzelne Programmteile, auf die mehrere Benutzer (Tasks) gleichzeitig zugreifen, gemeinsam benutzbar (shareable) zu machen.

Um gemeinsam benutzbare Programme zu erzeugen, muss bei der Übersetzung folgende Compileroption angegeben werden:

//MODIFY-MODULE-PROP SHAREABLE-CODE=*YES

Der Compiler erzeugt dann pro Übersetzungseinheit ein LLM mit einer nicht gemeinsam benutzbaren Daten-CSECT und einer gemeinsam benutzbaren Code-CSECT. Die Code-CSECT ist mit dem Attribut PUBLIC gekennzeichnet.

Bei einem anschließenden Binderlauf wird aus der Code-CSECT eine PUBLIC-Slice gebildet und aus der Daten-CSECT eine PRIVATE-Slice.

Die PUBLIC-Slice kann der Systemverwalter mit dem ADD-SHARED-Kommando als gemeinsam benutzbar erklären. Beim Aufruf mit dem START-EXECUTABLE-PROGRAM-Kommando wird dann nur die PRIVATE-Slice geladen.

Bespiel

/START-CPLUS-COMPILER 
//MOD-SOURCE-PROP LANG=*C
//MOD-MODULE-PROP SHAREABLE-CODE=*YES
//COMPILE SOURCE=MODUL1.C,MODULE-OUTPUT=*LIB-ELEM(LIB=A.TEST)
//COMPILE SOURCE=MODUL2.C,MODULE-OUTPUT=*LIB-ELEM(LIB=A.TEST)
//END
/START-BINDER
//START-LLM-CREATION INT-NAME=TEST,
//              SLICE-DEFINITION=BY-ATTRIBUTE(PUBLIC=*YES)
//INCLUDE-MODULES LIB=A.TEST,ELEM=(MODUL1)
//INCLUDE-MODULES LIB=A.TEST,ELEM=(MODUL2)
//SAVE-LLM LIB=B.TEST,ELEM=TEST
//END
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=$.SYSLNK.CRTE
/START-EXECUTABLE-PROGRAM FROM-FILE=*LIBRARY-ELEMENT(-
/                            LIB=B.TEST,ELEM=TEST),-
/              DBL-PAR=*PAR(RESOLUTION=*PAR(ALTERNATE-LIBRARIES=*BLSLIB##))