Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Benutzen der POSIX-Bibliotheksfunktionen

&pagelevel(4)&pagelevel

Mit CRTE wird ein C-Laufzeitsystem zur Verfügung gestellt, das C-Bibliotheksfunktionen mit BS2000-Funktionalität und mit POSIX-Funktionalität unterstützt.

Bibliotheksfunktionen mit BS2000-Funktionalität sind alle ANSI-definierten Funktionen sowie ca. 50 BS2000-spezifische Erweiterungen.
In folgenden Fällen können ausschließlich nur diese Funktionen genutzt werden:

  • wenn kein POSIX-Subsystem verfügbar ist oder

  • wenn in einem BS2000-Betriebssystem mit verfügbarem POSIX-Subsystem beim Übersetzen und Binden keine besonderen Vorkehrungen getroffen werden (siehe unten)

Die Bibliotheksfunktionen mit BS2000-Funktionalität sind in dem Handbuch „C-Bibliotheksfunktionen“ [2] beschrieben.

Bibliotheksfunktionen mit POSIX-Funktionalität sind folgende Funktionen des C-Laufzeitsystems: alle vom XPG4-Standard (spec1170) geforderten Funktionen sowie ca. 30 UNIX-spezifische Erweiterungen. Diese Funktionen und zusätzlich alle Funktionen mit BS2000-Funktionalität sind im Handbuch „C-Bibliotheksfunktionen für POSIX-Anwendungen“ [3] beschrieben.

Übersetzen und Binden von Programmen, die POSIX-Bibliotheksfunktionen benutzen

Um bei der Programmentwicklung in BS2000-Umgebung (SDF) die POSIX-Bibliotheksfunktionen nutzen zu können, sind folgende Schritte notwendig:

  1. Für die Suche nach den Standard-Includes muss beim Übersetzen zusätzlich zur CRTE-Bibliothek SYSLIB.CRTE die Bibliothek SYSLIB.POSIX-HEADER angegeben werden, die die Standard-Include-Elemente für die POSIX-Funktionen enthält.

    //MOD-INCLUDE-LIB STD-INCLUDE-LIB=(*STANDARD-LIBRARY,&(INSTALLATION-PATH

    (’SYSLIB’,’POSIX-HEADER’,DEFAULT=’$.SYSLIB.POSIX-HEADER’)))

  2. Bevor der Präprozessor auf die erste #include-Anweisung im Programm trifft, muss unbedingt das Define _OSD_POSIX gesetzt sein. Dies ist sichergestellt, wenn die Definition nicht im Quellprogramm mit der #define-Anweisung erfolgt, sondern global für den gesamten Übersetzungslauf mit der MODIFY-SOURCE-PROPERTIES-Anweisung.

    //MODIFY-SOURCE-PROPERTIES DEFINE=_OSD_POSIX

  3. Beim Binden muss die Bindeschalter-Bibliothek SYSLNK.CRTE.POSIX vorrangig vor der Bibliothek SYSLNK.CRTE bzw. SYSLNK.CRTE.PARTIAL-BIND bzw. SYSLNK.CRTE.COMPL eingebunden werden. Wir empfehlen, beim Binden mit dem BINDER, die Bindeschalter-Bibliothek mit einer INCLUDE-Anweisung (ohne Angabe der Modulnamen) einzubinden, da bei der Verwendung von RESOLVE-Anweisungen sonst strikt die Reihenfolge beachtet werden müsste, also z.B. mit der INCLUDE-Anweisung

    //INCLUDE-MODULES *LIB(LIB=&(INSTALLATION-PATH('SYSLNK.POSIX','CRTE',

    DEFAULT='$.SYSLNK.CRTE.POSIX')),ELEM=*ALL)

    Analog sollte beim Binden mit der BIND-Anweisung des Compilers in der MODIFY-BIND-PROPERTIES-Anweisung die INCLUDE-Option verwendet werden:

    //MOD-BIND-PROP INCLUDE=*LIB-ELEM(LIB=&(INSTALLATION-PATH('SYSLNK.POSIX',

    'CRTE',DEFAULT='$.SYSLNK.CRTE.POSIX')),ELEM=*ALL)

Bei der Programmentwicklung in POSIX-Umgebung sind dagegen keine besonderen Vorkehrungen zu treffen, um die POSIX-Bibliotheksfunktionen nutzen zu können (siehe Handbuch „POSIX-Kommandos des C/C++-Compilers“ [1]).