Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

LLMs mit Public/Private Slice binden

Wenn Sie mit dem Binder shareable Module im OM-Format zu LLMs mit einer Public Slice binden, dann müssen Sie darauf achten, dass die CSECTs dieser Module das Attribut PUBLIC besitzen. Ist dies nicht der Fall, legt der Binder diese CSECTs in die Private Slice.

Auftreten kann dies zum Beispiel bei AREAs, die vorher in shareable Modulen im OM-Format gewesen sind (hier hatte das Attribut keine Bedeutung), oder bei allen shareable COBOL-Objekten. Sie können die Objekte anpassen, indem Sie

  • bei AREAs das Attribut PUBLIC hinzufügen und dann neu übersetzen,

  • bei shareable COBOL-Objekten die zugehörigen Sourcen neu übersetzen und dabei im LLM-Format abspeichern

  • oder das PUBLIC-Attribut mit dem Binder setzen.

Das folgende Beispiel zeigt die dritte Möglichkeit.

Beispiel

Ein Lademodul soll als LLM vorgebunden werden. Es soll bestehen aus

  • den COBOL-Objekten AFPUT und COBECHO mit den nicht-shareable Teilen AFPUT und COBECHO und den shareable Teilen AFPUT@ und COBECHO@

  • sowie den shareable AREAs AREA1, AREA2 und AREA3, denen allen das PUBLIC-Attribut fehlt.

     

Dann ergeben sich folgende Binder-Anweisungen:

//START-LLM-CREATION                                                   -
//INTERNAL-NAME  = EXAMPLE-LLM                                         -
//                ,INTERNAL-VERSION    = 001                           -
//                ,SLICE-DEFINITION    = BY-ATTR( PUBLIC = YES )
//REMARK ---------------------------------------------------------------
//REMARK ---------------------------------------------------------------
//INCLUDE-MOD  LIB = LIB.UTM.PRELINK                                   -
//          ,ELE = COBECHO
//INCLUDE-MOD  LIB = LIB.UTM.PRELINK                                   -
//          ,ELE = AFPUT
//REMARK ---------------------------------------------------------------
//REMARK ---------------------------------------------------------------
//BEGIN-SUB-LLM SUB-LLM-NAME=OM-WITHOUT-PUBLIC-ATTRIBUTE
//INCLUDE-MOD  LIB = LIB.UTM.PRELINK                                   -
//          ,ELE = AFPUT@
//INCLUDE-MOD  LIB = LIB.UTM.PRELINK                                   -
//          ,ELE = COBECHO@
//INCLUDE-MOD  LIB = LIB.UTM.PRELINK                                   -
//          ,ELE = AREA1
//INCLUDE-MOD  LIB = LIB.UTM.PRELINK                                   -
//          ,ELE = AREA2
//INCLUDE-MOD  LIB = LIB.UTM.PRELINK                                   -
//          ,ELE = AREA3
//MODIFY-SYMBOL-ATTR   PUBLIC = YES
//END-SUB-LLM
//REMARK ---------------------------------------------------------------
//REMARK ---------------------------------------------------------------
//SET-EXTERN-RESOLUTION  SYMBOL-TYPE=REFERENCE , RESOLUTION=STD
//MODIFY-MAP-DEFAULT  PROGRAM-MAP = PAR( DEFINITION = ALL              -
//                                     ,INVERT         = ALL           -
//                                     ,REFERENC       = ALL)          -
//                                 ,UNRESOLVED     = YES               -
//                                 ,SORTED-PRO     = YES               -
//                                 ,DUPLICATE      = YES               -
//                                 ,OUTPUT= LIST.LINK.EXAMPLE-LLM
/REMARK ----------------------------------------------------------------
//SAVE-LLM   LIB = LIB.LOAD-MODULE.STARTUP                             -
//                ,ELEM                = *INTERNAL                     -
//                ,FOR-BS2000-VERSIONS = *FROM-OSD-V4(...)
//REMARK ---------------------------------------------------------------
//END 


Wie das Beispiel zeigt, reicht es, alle shareable Module, die nicht das PUBLIC-Attribut besitzen, in dem Binder-Lauf in ein SUB-LLM zu binden, und dann für das ganze SUB-LLM das Attribut PUBLIC mit der Anweisung MODIFY-SYMBOL-ATTRIBUTES zu setzen. In der Liste LIST.LINK.EXAMPLE-LLM - Abschnitt *PROGRAM MAP* - kann man sich dann anschauen, in welchem Slice sich die einzelnen Objekte befinden.