Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Das Tool II-UPDATE

&pagelevel(3)&pagelevel

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(...)


*LIBRARY-ELEMENT(...)



|

LIBRARY= <filename 1..54>



|

,ELEMENT= *ALL / <composed-name 1..64 with-under>(...)



|


<composed-name 1..64 with-under>(...)



|




VERSION= *HIGHEST-EXISTING / <composed-name 1..24 with-under>

,OLD-NAME= *LIBRARY-ELEMENT(...) / *LIBRARY(...)


* LIBRARY-ELEMENT(...)



|

LIBRARY= <filename 1..54>



|

,ELEMENT= <composed-name 1..64 with-under>(...)



|


<composed-name 1..64 with-under>(...)



|



|

VERSION= *DEFAULT / <composed-name 1..24 with-under>


*LIBRARY(...)



|

LIBRARY= <filename 1..54>

,NEW-NAME= *LIBRARY-ELEMENT(...) / *LIBRARY(...)


* LIBRARY-ELEMENT(...)



|

LIBRARY= *SAME / <filename 1..54>



|

,ELEMENT= *SAME / <composed-name 1..64 with-under>(...)



|


<composed-name 1..64 with-under>(...)



|



|

VERSION=*UNCHANGED / <composed-name 1..24 with-under>


*LIBRARY(...)



|

LIBRARY= <filename 1..54>

,CONTEXT= *INCLUDE / *CIF / *SOURCE / *LISTING / *ALL

,ACTION= list-poss(2): *REPLACE / *SHOW

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