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:
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’)))
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
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]).