Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

MODIFY-INCLUDE-LIBRARIES

&pagelevel(5)&pagelevel

Alias-Namen:

MODIFY-INCLUDE-SEARCH
SET-INCLUDE-LIBRARIES
SET-INCLUDE-SEARCH

Mit dieser Anweisung wird festgelegt, welche Include-Bibliotheken und -Dateiverzeichnisse vom Compiler durchsucht werden sollen. Außerdem wird die Reihenfolge bestimmt, in der diese Bibliotheken und Dateiverzeichnisse durchsucht werden.

MODIFY-INCLUDE-LIBRARIES

USER-INCLUDE-LIBRARY= *UNCHANGED / list-poss: *SOURCE-LIBRARY / *STANDARD-LIBRARY /






<filename 1..54> / <posix-pathname> / *LINK(...)


*LINK(...)




LINK-NAME= <filename 1..8>

,STD-INCLUDE-LIBRARY= *UNCHANGED / list-poss: *USER-INCLUDE-LIBRARY /





*STANDARD-LIBRARY / *SOURCE-LIBRARY / <filename 1..54> /





<posix-pathname> / *LINK(...)


*LINK(...)



|

LINK-NAME= <filename 1..8>

,CURRENT-LIBRARY= *UNCHANGED / *YES / *NO

USER-INCLUDE-LIBRARY =
Mit dieser Option können PLAM-Bibliotheken und POSIX-Dateiverzeichnisse angegeben werden, in denen die benutzereigenen Include-Dateien (angefordert mit #include "...") stehen. Abhängig von der Option CURRENT-LIBRARY wird vor den mit USER-INCLUDE-LIBRARY angegebenen Bibliotheken und Dateiverzeichnissen zunächst die Bibliothek oder das Dateiverzeichnis derjenigen Quell- oder Include-Datei durchsucht, die die Include-Anweisung #include "..." enthält.

Wird die Option USER-INCLUDE-LIBRARY nicht angegeben, gilt folgende Voreinstellung:

USER-INCLUDE-LIBRARY = (*SOURCE-LIBRARY, *STANDARD-LIBRARY)

Include-Dateien, die in der #include-Anweisung in Anführungszeichen angegeben werden (#include "name"), sucht der Compiler in der Bibliothek bzw. im Dateiverzeichnis des Quellprogramms und anschließend in den CRTE-Bibliotheken, die die Standard-Include-Dateien enthalten. In allen Sprachmodi wird die CRTE-Bibliothek $.SYSLIB.CRTE für die Suche zugewiesen. Im Sprachmodus Cfront-C++ wird vorher die CRTE-Bibliothek $.SYSLIB.CRTE.CPP zugewiesen. In den Sprachmodi C++ 2017 und C++ 2020 wird vorher die CRTE-Bibliothek für modernes C++ zugewiesen. Diese hängt von der Bibliotheks-Version ab. Bei Bibliotheks-Version 1 wird $.SYSLIB.CRTE.CXX01 zugewiesen, bei Bibliotheks-Version 2 ist es $.SYSLIB.CRTE.CXX02.

Wird die Option angegeben, ist die o.g. Voreinstellung ausgeschaltet und der Compiler durchsucht nur die explizit angegebenen Bibliotheken/Dateiverzeichnisse. Das heißt:
Wenn die Include-Dateien in der Bibliothek bzw. im Dateiverzeichnis des Quellprogramms und in den CRTE-Bibliotheken gesucht werden sollen, müssen die Optionswerte *SOURCE-LIBRARY und *STANDARD-LIBRARY explizit angegeben werden.
Die Bibliotheken/Dateiverzeichnisse werden in der Reihenfolge durchsucht, in der sie angegeben wurden.

USER-INCLUDE-LIBRARY = *UNCHANGED
Es gelten die Angaben der letzten MODIFY-INCLUDE-LIBRARY-Anweisung. Wenn seit dem Start des Compilers noch keine Werte verändert wurden, gelten die Standardeinstellungen des Compilers (*SOURCE-LIBRARY, *STANDARD-LIBRARY).

USER-INCLUDE-LIBRARY = *SOURCE-LIBRARY
Die angeforderte Include-Datei wird in der Bibliothek bzw. in dem Dateiverzeichnis gesucht, wo auch das Quellprogramm steht. Die Angabe *SOURCE-LIBRARY ist wirkungslos, wenn das Quellprogramm in einer katalogisierten BS2000-Datei steht und generell bei Quellprogrammeingabe über SYSDTA (siehe auch "Hinweise zur Eingabe über SYSDTA").

USER-INCLUDE-LIBRARY = *STANDARD-LIBRARY
In allen Sprachmodi wird die CRTE-Bibliothek $.SYSLIB.CRTE für die Suche zugewiesen. Im Sprachmodus Cfront-C++ wird vorher die CRTE-Bibliothek $.SYSLIB.CRTE.CPP zugewiesen. In den Sprachmodi C++ 2017 und C++ 2020 wird vorher die CRTE-Bibliothek für modernes C++ zugewiesen. Diese hängt von der Bibliotheks-Version ab. Bei Bibliotheks-Version 1 wird $.SYSLIB.CRTE.CXX01 zugewiesen, bei Bibliotheks-Version 2 ist es $.SYSLIB.CRTE.CXX02.

USER-INCLUDE-LIBRARY = <filename 1..54>
<filename> ist der Name der PLAM-Bibliothek, in der die angeforderten benutzereigenen Include-Dateien gesucht werden sollen.

USER-INCLUDE-LIBRARY = <posix-pathname>
<posix-pathname> ist der Name des POSIX-Dateiverzeichnisses, in dem die angeforderten benutzereigenen Include-Dateien gesucht werden sollen. Zur Beschreibung des Begriffs <posix-pathname> siehe "Compiler-Ein-/Ausgaben im POSIX-Dateisystem".

USER-INCLUDE-LIBRARY = *LINK(...)

LINK-NAME = <filename 1..8>

Statt eines katalogisierten PLAM-Bibliotheksnamens kann auch ein Linkname angegeben werden. <filename> ist der Linkname der zugewiesenen Include-Bibliothek. Er muss vor Aufruf des Compilers mit dem ADD-FILE-LINK-Kommando der PLAM-Bibliothek zugewiesen worden sein.

STD-INCLUDE-LIBRARY =
Mit dieser Option können PLAM-Bibliotheken und POSIX-Dateiverzeichnisse angegeben werden, in denen die Standard-Include-Dateien (angefordert mit #include <...>) stehen.

STD-INCLUDE-LIBRARY = *UNCHANGED

Es gelten die Angaben der letzten MODIFY-INCLUDE-LIBRARY-Anweisung. Wenn seit dem Start des Compilers noch keine Werte verändert wurden, gelten die Standardeinstellungen des Compilers (*USER-INCLUDE-LIBRARY, *STANDARD-LIBRARY).

STD-INCLUDE-LIBRARY = *USER-INCLUDE-LIBRARY
Die Suchreihenfolge für die Standard-Include-Dateien wird aus den Angaben in der USER-INCLUDE-LIBRARY-Option abgeleitet, wobei von dort nur die explizit angegebenen Bibliotheken/Dateiverzeichnisse berücksichtigt werden und nicht die Angaben *SOURCE-LIBRARY und *STANDARD-LIBRARY.

STD-INCLUDE-LIBRARY = *STANDARD-LIBRARY
In allen Sprachmodi wird die CRTE-Bibliothek $.SYSLIB.CRTE für die Suche zugewiesen. Im Sprachmodus Cfront-C++ wird vorher die CRTE-Bibliothek $.SYSLIB.CRTE.CPP zugewiesen. In den Sprachmodi C++ 2017 und C++ 2020 wird vorher die CRTE-Bibliothek für modernes C++ zugewiesen. Diese hängt von der Bibliotheks-Version ab. Bei Bibliotheks-Version 1 wird $.SYSLIB.CRTE.CXX01 zugewiesen, bei Bibliotheks-Version 2 ist es $.SYSLIB.CRTE.CXX02. 
Beachten Sie die Hinweise zu den Standard-Include-Dateien bei Verwendung der POSIX-Bibliotheksfunktionen.

STD-INCLUDE-LIBRARY = <filename 1..54>
<filename> ist der Name der PLAM-Bibliothek, in der die angeforderten Standard-Include-Dateien gesucht werden sollen.

STD-INCLUDE-LIBRARY = <posix-pathname>
<posix-pathname> ist der Name des POSIX-Dateiverzeichnisses, in dem die angeforderten Standard-Include-Dateien gesucht werden sollen. Zur Beschreibung des Begriffs <posix-pathname> siehe "Compiler-Ein-/Ausgaben im POSIX-Dateisystem".
Diese Angabe ist für die Standard-Includes des CRTE nicht sinnvoll, da diese aus den CRTE-Bibliotheken genommen werden sollen.

STD-INCLUDE-LIBRARY = *LINK(...)

LINK-NAME = <filename 1..8>

Statt eines katalogisierten PLAM-Bibliotheksnamens kann auch ein Linkname angegeben werden. <filename> ist der Linkname der zugewiesenen Include-Bibliothek. Er muss vor Aufruf des Compilers mit dem ADD-FILE-LINK-Kommando der PLAM-Bibliothek zugewiesen worden sein.

CURRENT-LIBRARY = *UNCHANGED / *YES / *NO
Diese Option betrifft die Suche nach Include-Dateien, die mit #include "..." angefordert werden.
*YES: Standardmäßig werden die Include-Dateien zunächst in der Bibliothek oder dem Dateiverzeichnis derjenigen Quell- oder Include-Datei gesucht, die die #include-Anweisung enthält und anschließend erst in den mit der Option USER-INCLUDE-LIBRARY angegebenen Dateiverzeichnissen/Bibliotheken. Dies entspricht dem Verhalten des Compilers im POSIX.

Steht das Quellprogramm in einer katalogisierten BS2000-Datei, werden Include-Dateien unter den katalogisierten BS2000-Dateien gesucht.

*NO: Bei Angabe von *NO werden nur die mit USER-INCLUDE-LIBRARY angegebenen Dateiverzeichnissen/Bibliotheken durchsucht. Dies entspricht dem Verhalten der Vorgänger-Compiler C und C++ V2.2.

Standard-Include-Dateien für die POSIX-Bibliotheksfunktionen

Die für die Verwendung der POSIX-Bibliotheksfunktionen notwendigen Standard-Include-Dateien sind nicht in der Bibliothek $.SYSLIB.CRTE enthalten, sondern in der mit BS2000/OSD-BC ausgelieferten Bibliothek $.SYSLIB.POSIX-HEADER. Diese Bibliothek muss immer zusätzlich zur Bibliothek $.SYSLIB.CRTE angegeben werden, wenn das Programm POSIX-Funktionen verwendet. Außerdem muss vor Auftreten der ersten #include-Anweisung im Programm das Define _OSD_POSIX gesetzt sein. Dies ist z.B. sichergestellt, wenn die Definition bei der Übersetzung mit der DEFINE-Option in der MODIFY-SOURCE-PROPERTIES-Anweisung erfolgt.

Beispiele zur MODIFY-INCLUDE-LIBRARY-Anweisung

Beispiel 1

Das Quellprogramm steht in einer PLAM-Bibliothek namens PLAM.SOURCE. Als Sprachmodus ist erweitertes C11 eingeschaltet.

Das Quellprogramm enthält die Anweisung

#include "incl.h"

Der Benutzer macht folgende Angaben:

//MODIFY-INCLUDE-LIBRARIES USER-INCL-LIB=(*STANDARD-LIBRARY,LIB1,-
//*LINK(LIB2),*SOURCE-LIBRARY,’/home/user-incl’)

Da die Option CURRENT-LIBRARY nicht angegeben wird, gilt CURRENT-LIBRARY=*YES.

Suchablauf:

Die Include-Datei "incl.h" wird der Reihe nach in folgenden Bibliotheken/Dateiverzeichnissen gesucht:

PLAM.SOURCE

(Auf Grund der Option CURRENT-LIBRARY=*YES die Bibliothek
des Quellprogramms, das die #include-Anweisung enthält)

$.SYSLIB.CRTE

(Standard-Include-Bibliothek)

LIB1

(Bibliothek mit dem Namen LIB1)

LIB2

(Bibliothek mit dem Linknamen LIB2)

PLAM.SOURCE

(Bibliothek des Quellprogramms)

/home/user-incl

(POSIX-Dateiverzeichnis mit dem Namen /home/user-incl)

Beispiel 2

Das Quellprogramm steht in einer PLAM-Bibliothek namens PLAM.SRC. Als Sprachmodus ist Cfront-C++ eingeschaltet.

Der Benutzer macht folgende Angaben:

//MODIFY-INCLUDE-LIBRARIES USER-INCLUDE-LIBRARY = ($XYZ.LIB,-
//*SOURCE-LIBRARY, LIB1),STD-INCLUDE-LIBRARY = (*USER-INCLUDE-LIBRARY,-
//*STANDARD-LIBRARY),CURRENT-LIBRARY = *NO

Die Suche nach den Include-Dateien gestaltet sich wie folgt:

#include "..."

#include <...>

$XYZ.LIB
PLAM.SRC
LIB1

$XYZ.LIB
LIB1
$.SYSLIB.CRTE.CPP
$.SYSLIB.CRTE

Beispiel 3

Das Quellprogramm steht in dem POSIX-Dateiverzeichnis /home/xy/src. Als Sprachmodus ist erweitertes C11 eingeschaltet.

Der Benutzer macht folgende Angaben:

//MODIFY-INCLUDE-LIBRARIES -
//USER-INCLUDE-LIBRARY=(*SOURCE-LIBRARY, ’/home/xy/incl1’, *STANDARD-LIBRARY),-
//STD-INCLUDE-LIBRARY=(*STANDARD-LIBRARY, $.SYSLIB.POSIX-HEADER,-
//*USER-INCLUDE-LIBRARY,’/home/xy/incl2’),CURRENT-LIBRARY=*NO

Die Suche nach den Include-Dateien gestaltet sich wie folgt:

#include "..."

#include <...>

/home/xy/src
/home/xy/incl1
$.SYSLIB.CRTE

$.SYSLIB.CRTE
$.SYSLIB.POSIX-HEADER
/home/xy/incl1
/home/xy/incl2