Bezüglich der C-Bibliotheksfunktionen besteht das Problem, dass einerseits die Namen, mit denen die Funktionen auf Quellprogrammebene angesprochen werden, durch Standards vorgeschrieben sind (z.B. printf
, fopen
), dass andererseits die BS2000-Namenskonventionen Entry-Namen verlangen, die mit dem Präfix „IC“ beginnen. Außerdem ist gefordert, dass die C-Bibliotheksfunktionen durch benutzereigene Funktionen ersetzt werden können, in denen die Entry-Namen aus dem Funktionsnamen ohne das Präfix „IC“ gebildet werden.
Dieses Problem wurde bis zur CRTE-Version 1.0B dadurch gelöst, dass der Compiler mithilfe einer Tabelle die Funktionsnamen erkannt und entsprechend umgesetzt hat. Dies hatte zur Folge, dass Änderungen im C-Laufzeitsystem immer mit Änderungen im Compiler verbunden waren. Diese Technik wird aus Kompatibilitätsgründen für die bis dahin im C-Laufzeitsystem vorhandenen C-Bibliotheksfunktionen (Funktionen des C90-Standards sowie ca. 50 BS2000-spezifische Erweiterungen) beibehalten. Für alle mit CRTE ab V2.0A namentlich neu hinzugekommenen POSIX-Funktionen und in Zukunft neu hinzukommenden Funktionen wird das Problem compilerunabhängig mit Namens-Adaptermodulen gelöst. Diese Adaptermodule enthalten den aus dem Funktionsnamen abgeleiteten Entry-Namen ohne das Präfix „IC“ und rufen die eigentliche „Standard“-Funktion mit dem Entry-Namen IC... auf.
Pro C-Bibliotheksfunktion stehen folgende Adaptermodule zur Verfügung:
Ein Objektmodul (OM) mit dem ggf. auf 8 Zeichen verkürzten Funktionsnamen als Entry-Name, in dem die Kleinbuchstaben in Großbuchstaben und der Unterstrich in das Dollarzeichen umgewandelt sind. Z.B.
FPATHKON
für die Funktionfpathkonv
.Diese sind nur noch relevant, wenn Objektmodule gebunden werden, die mit den C/C++-Vorgänger-Compilern (bis V2.2) erzeugt wurden. C/C++ ab V3 erzeugt ausschließlich Module im LLM-Format.
Bis zu vier LLMs, in denen jeweils der unverkürzte Funktionsname als Entry-Name enthalten ist, aber einmal in Kleinbuchstaben oder in Großbuchstaben, einmal mit beibehaltenem oder mit umgewandeltem Unterstrich (vgl. die Optionen LOWER-CASE-NAMES und SPECIAL-CHARACTERS in der MODIFY-MODULE-PROPERTIES-Anweisung).
Z.B. liegen für die Funktion
fpathkonv
zwei LLMs vor, die die Entry-NamenFPATHKONV
bzw.fpathkonv
enthalten.
Die Adaptermodule gehören zu den nicht vorladbaren Bestandteilen des C-Laufzeitsystems und müssen deshalb in das Anwendungsprogramm eingebunden werden. Sie sind sowohl in der Bibliothek SYSLNK.CRTE als auch in der Bibliothek SYSLNK.CRTE.PARTIAL-BIND enthalten.
Wenn an Stelle der Bibliotheksfunktion die benutzereigene Funktion aufgerufen werden soll, muss das entsprechende Benutzermodul vorrangig vor der Bibliothek SYSLNK.CRTE bzw. SYSLNK.CRTE.PARTIAL-BIND eingebunden werden. Das Benutzermodul kann ein Objektmodul oder ein LLM (mit oder ohne Umwandlung der Kleinbuchstaben und des Unterstrichs) sein.