Bei der Modulnamensbildung muss man unterscheiden zwischen dem Elementnamen (Name des „Behälters“), unter dem das Modul als Bibliothekselement abgelegt wird, und dem internen Modul- und CSECT-Namen.
Wird in der COMPILE-Anweisung mit der MODULE-OUTPUT-Option der Name des Moduls nicht explizit angegeben, werden Elementnamen und interne Modul-/CSECT-Namen aus dem Namen des Quellprogramms abgeleitet.
Wird in der COMPILE-Anweisung mit der MODULE-OUTPUT-Option der Name des Moduls explizit angegeben, werden aus diesem Namen Elementnamen und interne Modul-/CSECT-Namen gebildet.
Bildung der Elementnamen von LLMs in PLAM-Bibliotheken
Ableitung aus dem Quellprogrammnamen
Folgende ggf. vorhandene Teile des Quellprogrammnamens werden für die Bildung des Elementnamens nicht herangezogen und entfernt: <cat-id> und <user-id> sowie die Suffixe
.C
, .CPP
, .CXX
, .CC
oder.I
(bei BS2000-Dateien) bzw..c
,.C
, .cpp
, .CPP
, .cxx
, .CXX
, .cc
, .CC
, .c++
, .C++
, .i
oder.I
(bei POSIX-Dateien).Ist der übrige Quellprogrammname länger als 59 Zeichen, wird er auf 59 Zeichen von rechts verkürzt.
Für Elementnamen unerlaubte Sonderzeichen werden generell in „$“ umgewandelt. Erlaubt sind die Sonderzeichen $, @, #, . (Punkt), - (Bindestrich) und _ (Unterstrich). Kleinbuchstaben in POSIX-Dateinamen werden in Großbuchstaben umgewandelt.
Wird das Quellprogramm von SYSDTA gelesen, lautet der Elementname „CSTDMOD“. Dies gilt auch, wenn SYSDTA mit dem ASSIGN-SYSDTA-Kommando einer katalogisierten Datei oder einem Bibliothekselement zugewiesen wird.
Ableitung aus dem explizit angegebenen Namen
In diesem Fall wird der angegebene Name unverändert als Elementname genommen, d.h. ein ggf. vorhandenes Suffix
.C
, .CPP
, .CXX
, .CC
oder.I
wird nicht entfernt. Eine Namensverkürzung findet ebenfalls nicht statt. Der Name kann also bis zu 64 Zeichen lang sein.
Achtung:
Zur Weiterverarbeitung mit dem DBL können die Elementnamen von LLMs derzeit maximal 32 Zeichen lang sein. Dies gilt sowohl für das LLM, das im START-EXECUTABLE-PROGRAM-Kommando angegeben wird (Modul, das die main
-Funktion enthält) als auch für LLMs, die dynamisch gebunden werden sollen.
LLMs, deren Elementnamen länger als 32 Zeichen lang sind, müssen daher mit dem BINDER gebunden werden.
Bildung der Namen von LLM-Objektdateien im POSIX-Dateisystem
Ableitung aus dem Quellprogrammnamen
Der Name der LLM-Objektdatei wird wie folgt aus dem Namen der POSIX-Quelldatei abgeleitet: Es werden lediglich ggf. vorhandene Suffixe
.c
,.C
, .cpp
, .CPP
, .cxx
, .CXX
, .cc
, .CC
, .c++
, .C++
, .i
oder.I
aus dem Namen der POSIX-Quelldatei entfernt, und an den restlichen Namen wird das Suffix.o
angehängt. Eine Namensverkürzung, die Umwandlung von diversen Sonderzeichen in das $-Zeichen sowie die Umwandlung von Klein- in Großbuchstaben findet nicht statt.Ableitung aus dem explizit angegebenen Namen
Der angegebene Name wird unverändert übernommen. Es ist zu beachten, dass LLM-Objektdateien nur sinnvoll im POSIX-Subsystem weiterverarbeitet werden können, wenn sie das Suffix
.o
enthalten.
Bildung der internen Modul- und CSECT-Namen von LLMs
Ableitung aus dem Quellprogrammnamen
Folgende ggf. vorhandene Teile des Quellprogrammnamens werden für die Bildung der Modul-/CSECT-Namen nicht herangezogen und entfernt: <cat-id> und <user-id> sowie die Suffixe
.C
, .CPP
, .CXX
, .CC
oder.I
(bei BS2000-Dateien) bzw..c
,.C
, .cpp
, .CPP
, .cxx
, .CXX
, .cc
, .CC
, .c++
, .C++
, .i
oder.I
(bei POSIX-Dateien).Ist der Rest des Quellprogrammnamens länger als 30 Zeichen, wird er auf 30 Zeichen von rechts verkürzt.
Die für interne LLM-Namen unerlaubten Sonderzeichen werden generell in „$“ umgewandelt. Erlaubt sind die Sonderzeichen $, @, #, - (Bindestrich) und _ (Unterstrich). Kleinbuchstaben in POSIX-Dateinamen werden in Großbuchstaben umgewandelt.
Wird das Quellprogramm von SYSDTA gelesen, wird für die Namensbildung „CSTDMOD“ zu Grunde gelegt. Dies gilt auch, wenn SYSDTA mit dem ASSIGN-SYSDTA-Kommando einer katalogisierten Datei oder einem Bibliothekselement zugewiesen wird.
Aus den nach den Regeln 1. bis 4. abgeleiteten Kernnamen werden nun die endgültigen Modul- und CSECT-Namen durch Anhängen eines 2-stelligen Suffixes „&@“ bzw. „&#“ gebildet:
Modulname
<kernname>&@
Code-CSECT
<kernname>&@
Daten-CSECT
<kernname>&#
Ableitung aus dem explizit angegebenen Namen
Der gesamte angegebene Name wird zur Bildung des Modul-/CSECT-Namens herangezogen, d.h. ein ggf. vorhandenes Suffix
.c
,.C
, .cpp
, .CPP
, .cxx
, .CXX
, .cc
, .CC
, .c++
, .C++
, .i
oder.I
wird nicht entfernt.Die Namensverkürzung auf 30 Zeichen von rechts, die Umwandlung unerlaubter Sonderzeichen in das $-Zeichen, die Umwandlung von Klein- in Großbuchstaben sowie das Anhängen der Suffixe erfolgt wie bei der Ableitung aus dem Quellprogrammnamen.
Bildung der Namen von ii-Dateien
Für jede Quelldatei, die ein Template benutzt, wird, falls noch nicht vorhanden, eine Instanziierungs-Informationsdatei (ii-Datei) erzeugt.
Der Name der ii-Datei wird aus dem Namen der zugehörigen Objektdatei durch anfügen des Suffix .ii gebildet.
Bei der Übersetzung von hugo.C
würde z.B die ii-Datei hugo.o.ii
erzeugt werden, wenn nicht explizit ein anderer Objektname als hugo.o
angegeben wird.
Die ii-Datei steht in der Bibliothek, in der auch die Objektdatei abgelegt ist.