Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Ausgabe von Modulen

Der Compiler übersetzt die eingegebenen Quelldaten in Maschinensprache und erzeugt auf diese Weise ein oder mehrere Objektmodule (OM Format) oder Bindelademodule (LLM Format). Der Benutzer kann veranlassen, dass einem Modul ein Symbolisches Adressbuch (LSD, List for Symbolic Debugging) zugeordnet wird, das die symbolischen Adressen der

Übersetzungseinheit speichert.

Objektmodule gibt der Compiler standardmäßig in die temporäre EAM-Datei der aktuellen Task aus. Die Objektmodule werden dort additiv, d.h. ohne Bezug zueinander, abgespeichert.

Die EAM-Datei gehört zu der Task, in der die Übersetzung stattfindet. Sie wird beim ersten Übersetzungslauf für diese Task angelegt und bei Task-Ende (LOGOFF-Bearbeitung) automatisch gelöscht. Soll das Ergebnis der Übersetzung also weiterverwendet werden, so ist der Benutzer dafür verantwortlich, dass der Inhalt der EAM-Datei sichergestellt bzw. weiterverarbeitet wird. Für die Sicherstellung von Objektmoduln aus der EAM-Datei in PLAM-Bibliotheken steht ihm dabei das Dienstprogramm LMS zur Verfügung (siehe Handbuch [ 11]).

Werden die übersetzten Objektmodule in der EAM-Datei nicht mehr benötigt, z.B. weil die Übersetzungseinheit noch zu korrigierende Fehler enthält, so empfiehlt es sich, die EAM-Datei spätestens vor dem nächsten Übersetzungslauf mit dem Kommando

/DELETE-SYSTEM-FILE SYSTEM-FILE= *OMF

zu löschen.

Bindelademodule (LLMs) schreibt der Compiler grundsätzlich als Elemente vom Typ L in eine PLAM-Bibliothek.

Falls das POSIX-Subsystem vorhanden ist, können die Module ins POSIX-Dateisystem ausgegeben werden. Diese Möglichkeit ist in Abschnitt „MODULE-OUTPUT-Option" beschrieben.

Bildung von Elementnamen bei der Ausgabe von Modulen in Bibliotheken


Übersetzungseinheit

Modulformat OM

Modulformat LLM

Standardname abgeleitet aus

nicht gemeinsam benutzbarer Code1)

nicht segmentiert

segmentiert



ID-Name 2)  1..8 3)

PROGRAM-ID-Name 1..6
+ Segmentnummer
(für jedes Segment)


ID-Name 2) 1..30 4)

PROGRAM-ID-Name 1..30 4)
(Segmentierung ignoriert)

gemeinsam
benutzbarer Code 5)

ID-Name 2) 1..7@
(Code-Modul)
ID-Name 2) 1..7
(Datenmodul)

ID-Name 2) 1..30 3)

Tabelle 2: Elementnamenbildung bei Modulausgabe


1)

Modul erzeugt mit
COMPILER-ACTION=MODULE-GENERATION(SHAREABLE-CODE=NO)
bzw. COMOPT GENERATE-SHARED-CODE=NO

2)

ID-Name ist PROGRAM-ID-Name, CLASS-ID-Name oder INTERFACE-ID-Name

3)

Der Name sollte in den ersten 7 Zeichen eindeutig sein.

4)

Statt des Standardnamens kann mit
MODULE-OUTPUT=*LIBRARY-ELEMENT(LIBRARY=<filename>,ELEMENT=<composed-name>)
bzw. COMOPT MODULE-ELEMENT=elementname
ein eigener Elementname gewählt werden.
Diese Option beeinflusst jedoch nicht den Namen des Einsprungpunktes, d.h. den Namen, der in der CALL-Anweisung angegeben wird.
(Nicht für Programmfolgen zulässig).

5)

Modul erzeugt mit
COMPILER-ACTION=MODULE-GENERATION(SHAREABLE-CODE=YES)
bzw. COMOPT GENERATE-SHARED-CODE=YES