Beim Binden oder Neu-Übersetzen von C++ V3, C++ 2017 bzw. C++ 2020-Programmen wird auf vorhandene ii-Informationen (ii=Instanziierungs Informationen) zugegriffen. Diese Informationen enthalten u.a. die Namen von Source-Dateien/Bibliotheken und Source-Elementen, von Include-Bibliotheken und von Listen - bzw CIF-Dateien/Bibliotheken/Elementen. Werden diese Dateien, Bibliotheken und/oder Elemente umbenannt oder unter einer anderen Kennung (oder auch einer anderen cat-id) gehalten, so müssen diese Änderungen in den ii-Dateien nachgezogen werden.
ii-Dateien, auch ii-Elemente genannt, werden vom Compiler beim Übersetzen von Programmen erzeugt, die Templates enthalten.
II-UPDATE ist ein compilerunabhängiges Tool mit SDF-Oberfläche, das nach Umbenennung einer Source - bzw. Include- Bibliothek, diese Umbenennung(en) in der ii-Datei nachzieht, ohne dass neu übersetzt werden muss. Pro Aufruf werden die ii-Elemente nur einer Bibliothek angepasst.
Einträge in ii-Elementen, die Namen von BS2000- oder POSIX-Dateien oder POSIX-Directories enthalten, können nicht geändert werden, aber II-UPDATE kann diese fehlerfrei anzeigen. Dies gilt sowohl für Source-, Include-, CIF-, als auch für Listing-Einträge.
Die SDF-Syntaxdatei des II-UPDATE wird nicht automatisch aktiviert. Vor der Nutzung des Kommandos muss sie pro Sitzung einmal aktiviert werden. Das Kommando dazu lautet /MODIFY-SDF-OPTIONS *ADD($.SYSSDF.CPP.040.IU.USER).
START-II-UPDATE | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CONTAINER = *LIBRARY-ELEMENT(...)
Mit dieser Option wird angegeben, in welcher Objekt-Bibliothek welche ii-Elemente angepasst werden sollen.
LIBRARY = <filename 1..54>
<filename> ist der Name einer PLAM-Bibliothek.
ELEMENT = *ALL
Es sollen alle ii-Elemente in der mit LIBRARY= angegebenen PLAM-Bibliothek angepasst werden. Das sind alle Elemente vom Typ S und einem Namen mit dem Suffix ".II".
ELEMENT = <composed-name 1..64 with-under>(...)
<composed-name> bezeichnet den vollqualifizierten Namen eines ii-Elementes aus der mit LIBRARY= angegebenen PLAM-Bibliothek.
VERSION = *HIGHEST-EXISTING
Enthält die ii-Elementangabe keine Versionsbezeichnung, nimmt II-UPDATE das ii-Element mit der höchsten Version.
VERSION = <composed-name 1..24 with-under>
II-UPDATE nimmt das ii-Element mit der angegebenen Version.
OLD-NAME = *LIBRARY-ELEMENT(...) / *LIBRARY
Mit dieser Option werden der ursprüngliche Bibliotheksname bzw. die ursprünglichen Bibliotheks-Elementnamen (z.B. von Source-Bibliotheks-Elementen) angegeben, die in einer ii-Datei geändert werden sollen. Der Name muss exakt so, wie in der ii-Datei vorgefunden, also ggf. mit cat-id
und user-id
angegeben werden (siehe auch Beispiel 6).
LIBRARY-ELEMENT (...)
LIBRARY = <filename 1..54>
<filename> ist der Name der PLAM-Bibliothek, der sich geändert hat bzw. in der geändert wurde.
ELEMENT = <composed-name 1..64 with-under>(...)
<composed-name> bezeichnet den vollqualifizierten Namen eines Elementes, der sich geändert hat.
VERSION = *DEFAULT
Unabhängig vom Kontext wird der im ii-Element vorgefundene Versions-Wert übernommen.
VERSION = <composed-name 1..24 with-under>
Bezeichnet die Version des Elementes, das sich geändert hat.
LIBRARY = <filename 1..54>
<filename> ist der Name einer PLAM-Bibliothek, der sich geändert hat.
NEW-NAME = *LIBRARY-ELEMENT(...) / *LIBRARY
Mit dieser Option wird der neue Bibliotheks- bzw. Elementname für die in OLD-NAME genannten Namen angegeben.
LIBRARY-ELEMENT(...)
LIBRARY = *SAME / <filename 1..54>
Bei *SAME wird der im OLD-NAME Parameter angegebene Name der PLAM-Bibliothek übernommen.
<filename> ist der neue Name der PLAM-Bibliothek, die in der Option OLD-NAME angegeben wurde.
ELEMENT = *SAME / <composed-name 1..64 with-under>(...)
Bei *SAME wird der im OLD-NAME Parameter angegebene Element-Name übernommen.
<composed-name> bezeichnet den geänderten, vollqualifizierten Namen eines Elementes, das in der Option OLD-NAME angegeben wurde.
VERSION = *UNCHANGED
Die vorgefundene Version des Bibliothekselementes (im ii-Element) soll nicht geändert werden.
VERSION = <composed-name 1..24 with-under>
Der neue Versionsname des Elementes.
LIBRARY = <filename 1..54>
<filename> ist der neue Name der PLAM-Bibliothek, die in der Option OLD-NAME angegeben wurde.
Hinweis
Es werden nur gleichartige OLD-NAME / NEW-NAME-Kombinationen unterstützt, dh.
OLD-NAME = *LIBRARY / NEW-NAME = *LIBRARY bzw.
OLD-NAME = *LIBRARY-ELEMENT / NEW-NAME = *LIBRARY-ELEMENT
CONTEXT =
Es wird angegeben, welche Teile der ii-Information bearbeitet werden sollen. Diese entsprechen bestimmten Anweisungen an den C++-Compiler.
CONTEXT = *INCLUDE
Bearbeite die Einträge, die der Anweisung //MODIFY-INCLUDE-LIBRARIES entsprechen.
Für *INCLUDE wird die Anpassung des Bibliotheksnamen nur durchgeführt, wenn OLD-NAME und NEW-NAME beides Bibliotheksnamen sind. Sind OLD-NAME und NEW-NAME Bibliotheks-Elementnamen , so wird die Anpassung für *INCLUDE nicht vorgenommen.
CONTEXT = *CIF
Bearbeite die Einträge, die der Anweisung //MODIFY-CIF-PROPERTIES OUTPUT= entsprechen.
CONTEXT = *SOURCE
Bearbeite die Einträge, die der Anweisung //COMPILE SOURCE= entsprechen.
CONTEXT = *LISTING
Bearbeite die Einträge, die der Anweisung //MODIFY-LISTING-PROPERTIES OUTPUT= entsprechen.
CONTEXT = *ALL
Bearbeite alle Einträge.
Hinweis
Es wird eine Meldung ausgegeben, in der die Gesamtzahl(en) der Ersetzungen in den einzelnen Kontexten aufgeführt ist.
ACTION =
Mit dieser Option kann II-UPDATE zur Ersetzung bzw. Ausgabe aller potentiell ersetzbaren Bibliotheksnamen und Bibliotheks-Elementnamen eines ii-Elementes angewiesen werden.
ACTION = *REPLACE
Ersetzungen werden durchgeführt. Es werden nur die durchgeführten Ersetzungen ausgegeben.
ACTION = *SHOW
Es werden keine Ersetzungen durchgeführt. Alle möglichen Ersetzungen werden aber ausgegeben. Ebenso werden Namen von Bibliotheken und Elementen ausgegeben, die nicht ersetzt werden würden.
ACTION = (*SHOW, *REPLACE)
Ersetzungen werden durchgeführt. Zusätzlich zu den durchgeführten Ersetzungen werden auch die nicht durchgeführten Ersetzungen ausgegeben.
Hinweis
In allen Fällen wird der angegebene Kontext mit berücksichtigt. II-UPDATE bleibt bezüglich Aufruf-, Ersetzungs- und Ausgabe-Verhalten kompatibel zu älteren Versionen.
Einige nachfolgende Beispiele sollen den beschriebenen Sachverhalt weiter erläutern.
Beispiel 1
Die Include-Bibliothek INC-LIB-V1 wurde in INC-LIB-V2 umbenannt. Die folgende Anweisung führt die entsprechenden Anpassungen aller in der Bibliothek MY-OBJ-LIB enthaltenen ii-Elemente durch.
/START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB, *ALL),- /OLD-NAME=*LIBRARY(INC-LIB-V1),- /NEW-NAME=*LIBRARY(INC-LIB-V2),- /CONTEXT=*INCLUDE
Beispiel 2
Die Source-Bibliothek MY-SOURCE-LIB.V1 wurde in MY-SOURCE-LIB.V2 umbenannt. Folgende Anweisung führt die entsprechenden Anpassungen des Bibliotheks-Elementes EL.O.II in der Bibliothek MY-OBJ-LIB durch:
/START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB, EL.O.II),- /OLD-NAME=*LIBRARY(MY-SOURCE-LIB.V1),- /NEW-NAME=*LIBRARY(MY-SOURCE-LIB.V2),- /CONTEXT=*SOURCE
Beispiel 3
Die Source-Bibliotheken MY-SOURCE-LIB1 und MY-SOURCE-LIB2 enthalten ein Programmsystem. Die zugehörigen Objekte liegen in den Bibliotheken MY-OBJ-LIB1 und MY-OBJ-LIB2. Die Source-Bibliotheken sollen nach SOURCE-LIB1-V1 bzw. SOURCE-LIB2-V1 umbenannt werden. Weiter wird angenommen, dass die Source-Bibliotheken sich wechselseitig benutzen (inkludieren):
/MODIFY-FILE-ATTRIBUTES MY-SOURCE-LIB1, SOURCE-LIB1-V1 /MODIFY-FILE-ATTRIBUTES MY-SOURCE-LIB2, SOURCE-LIB2-V1
Die ii-Dateien/Elemente werden durch folgende Anweisungen angepasst:
/START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB1, *ALL),- /OLD-NAME=*LIBRARY(MY-SOURCE-LIB1),- /NEW-NAME=*LIBRARY(SOURCE-LIB1-V1),- /CONTEXT=*ALL /START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB1, *ALL),- /OLD-NAME=*LIBRARY(MY-SOURCE-LIB2),- /NEW-NAME=*LIBRARY(SOURCE-LIB2-V1),- /CONTEXT=*INCLUDE /START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB2, *ALL),- /OLD-NAME=*LIBRARY(MY-SOURCE-LIB1),- /NEW-NAME=*LIBRARY(SOURCE-LIB1-V1),- /CONTEXT=*INCLUDE /START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB2, *ALL),- /OLD-NAME=*LIBRARY(MY-SOURCE-LIB2),- /NEW-NAME=*LIBRARY(SOURCE-LIB2-V1),- /CONTEXT=*ALL
Beispiel 4
In dem in Beispiel 3 beschriebenen Programmsystem soll statt der Umbenennung der Source-Bibliotheken das Source-Bibliothekselement MY-ELEM.C aus der Bibliothek MY-SOURCE-LIB1 in die Bibliothek MY-SOURCE-LIB2 und das zugehörige Objekt MY-ELEM.O, sowie das zugehörige ii-Element MY-ELEM.O.II nach MY-OBJ-LIB2 verschoben werden:
/LMS //O-L MY-SOURCE-LIB1,*U //COP-EL (,MY-ELEM.C,S),(MY-SOURCE-LIB2,MY-ELEM.C) //DEL-EL (,MY-ELEM.C,S) //O-L MY-OBJ-LIB1,*U //COP-EL (,MY-ELEM.O,L),(MY-OBJ-LIB2,MY-ELEM.O) //COP-EL (,MY-ELEM.O.II,S),(MY-OBJ-LIB2,MY-ELEM.O.II) //DEL-EL (,MY-ELEM.O.L) //DEL-EL (,MY-ELEM.O.II,S) //END
Die ii-Dateien/Elemente werden durch folgende Anweisung angepasst:
/START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB2, MY-ELEM.O.II),- /OLD-NAME=*LIB-ELEM(MY-SOURCE-LIB1, MY-ELEM.C),- /NEW-NAME=*LIB-ELEM(MY-SOURCE-LIB2, MY-ELEM.C),- /CONTEXT=*SOURCE
Beispiel 5
Die Source-Bibliotheken MY-SOURCE-LIB1 und MY-SOURCE-LIB2 enthalten ein Programmsystem (vgl. Beispiel 3). Die zugehörigen Listing-Bibliotheken MY-LISTING-LIB1 und MY-LISTING-LIB2 sollen nach LISTING-LIB1-V1 bzw. LISTING-LIB2-V1 umbenannt werden:
/MODIFY-FILE-ATTRIBUTES MY-LISTING-LIB1, LISTING-LIB1-V1 /MODIFY-FILE-ATTRIBUTES MY-LISTING-LIB2, LISTING-LIB2-V1
Die ii-Dateien/Elemente werden durch folgende Anweisungen angepasst:
/START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB1,*ALL),- /OLD-NAME=*LIBRARY(MY-LISTING-LIB1),- /NEW-NAME=*LIBRARY(LISTING-LIB1-V1),- /CONTEXT=*LISTING /START-II-UPDATE CONTAINER=*LIB-ELEM(MY-OBJ-LIB2,*ALL),- /OLD-NAME=*LIBRARY(MY-LISTING-LIB2),- /NEW-NAME=*LIBRARY(LISTING-LIB2-V1),- /CONTEXT=*LISTING
Beispiel 6
Die Include-Bibliothek HELLO-MAP.INCLIB wurde in HELLO-MAP.INCLIB.NEW umbenannt. Durch die folgende Anweisungsfolge wird zunächst die exakte Schreibweise der Bibliothek ermittelt, die umbenannt werden soll (ACTION=*SHOW; die Werte der Parameter old-name und new-name sind in diesem Fall bedeutungslos) und danach werden die Ersetzungen mit ACTION=(*SHOW, *REPLACE) durchgeführt:
/START-II-UPDATE CONTAINER=*LIB-ELEM(HELLO-MAP.OLIB1,*ALL),- /OLD-NAME=*LIBRARY(OLIB),- /NEW-NAME=*LIBRARY(NLIB),- /CONTEXT=*ALL,- /ACTION=*SHOW
Ausgabe:
% BLS0523 ELEMENT 'II-UPDATE', VERSION '04.0B02', TYPE 'L' FROM LIBRARY ':2OSG: $TSOS.SYSLNK.CPP.040' IN PROCESS % BLS0524 LLM 'II-UPDATE', VERSION '04.0B02' OF '2023-04-02 14:33:19' LOADED % BLS0551 COPYRIGHT (C) 2023 Fujitsu Technology Solutions GmbH. ALL RIGHTS RESERVED % CDR9992 BEGIN II-UPDATE VERSION 04.0B02 % CDR9810 Processing ii-element *LIBRARY-ELEMENT(:2OSC:$MTZ.HELLO-MAP.OLIB1, HELLO-MAP-HP.II(*UPPER-LIMIT),S) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$TSOS.SYSLIB.CRTE) % CDR9819 source lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.SLIB1) % CDR9810 Processing ii-element *LIBRARY-ELEMENT(:2OSC:$MTZ.HELLO-MAP.OLIB1, HELLO-MAP-UP.II(*UPPER-LIMIT),S) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$TSOS.SYSLIB.CRTE) % CDR9819 source lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.SLIB1) % CDR9814 Summary: 0 include / 0 source / 0 cif / 0 listing replaced % CCM0998 CPU TIME USED: 0.1485 SECONDS
/START-II-UPDATE CONTAINER=*LIB-ELEM(HELLO-MAP.OLIB1,*ALL),- /OLD-NAME=*LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB),- /NEW-NAME=*LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB.NEW),- /CONTEXT=*ALL,- /ACTION=(*REPLACE,*SHOW)
Ausgabe
% BLS0523 ELEMENT 'II-UPDATE', VERSION '04.0B02', TYPE 'L' FROM LIBRARY ':2OSG: $TSOS.SYSLNK.CPP.040' IN PROCESS % BLS0524 LLM 'II-UPDATE', VERSION '04.0B02' OF '2023-04-02 14:33:19' LOADED % BLS0551 COPYRIGHT (C) 2023 Fujitsu Technology Solutions GmbH. ALL RIGHTS RESERVED % CDR9992 BEGIN II-UPDATE VERSION 04.0B02 % CDR9810 Processing ii-element *LIBRARY-ELEMENT(:2OSC:$MTZ.HELLO-MAP.OLIB1, HELLO-MAP-HP.II(*UPPER-LIMIT),S) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$TSOS.SYSLIB.CRTE) % CDR9811 include lib replaced: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB) --> *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB.NEW) % CDR9819 source lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.SLIB1) % CDR9810 Processing ii-element *LIBRARY-ELEMENT(:2OSC:$MTZ.HELLO-MAP.OLIB1, HELLO-MAP-UP.II(*UPPER-LIMIT),S) % CDR9819 include lib no replacement: *LIBRARY(:2OSC:$TSOS.SYSLIB.CRTE) % CDR9811 include lib replaced: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB) --> *LIBRARY(:2OSC:$MTZ.HELLO-MAP.INCLIB.NEW) % CDR9819 source lib no replacement: *LIBRARY(:2OSC:$MTZ.HELLO-MAP.SLIB1) % CDR9814 Summary: 2 include / 0 source / 0 cif / 0 listing replaced % CCM0998 CPU TIME USED: 0.2243 SECONDS