Allgemeines
Anwendungsgebiet: | Binden und Laden; siehe "Binden und Laden" |
Makrotyp: | O-Typ; siehe "O-Typ-Makroaufrufe" |
Makrobeschreibung
Mit dem Makroaufruf LPOV wird nur das eine angegebene Segment in den Speicher geladen, unabhängig davon, ob es schon im Speicher steht.
Der Makro LPOV wird verwendet, wenn das Laden von Segmenten auf nicht-automatische Weise veranlasst werden soll. Beim automatischen Laden von Segmenten können mit einem Makroaufruf mehrere Segmente geladen werden (siehe Handbuch „Dienstprogramme“ [27]).
Makroaufrufformat und Operandenbeschreibung
LPOV |
,modulname [,adresse] |
modulname
Symbolischer Name des zu ladenden Segmentes, der aus 6 alphanumerischen Zeichen bestehen kann.
adresse
Symbolische Adresse im aufrufenden oder einem anderen Modul, bei der nach dem Laden fortgesetzt wird. Wird dieser Operand nicht angegeben, so wird mit dem auf LPOV folgenden Befehl fortgesetzt. Das aufrufende Programm wartet, bis das Modul geladen ist.
Funktionsweise
Die Ausführung des Makros LPOV bewirkt einen Aufruf des statischen Laders, der das mit „modulname“ angegebene Segment in den Speicher lädt. Nach Abschluss des Ladevorgangs wird die Steuerung an den mit „adresse“ bezeichneten Befehl übergeben. Diese Adresse kann im aufrufenden Modul liegen oder ein Externverweis in einem anderen Modul sein. Ist der Operand „adresse“ nicht angegeben, wird das aufrufende Modul mit dem auf LPOV folgenden Befehl fortgesetzt.
Wenn eine externe Referenz als Übergangspunkt verwendet wird, liegt es in der Verantwortung des Benutzers, dafür zu sorgen, dass das Modul mit der entsprechenden Einsprungadresse nach Abschluss des Ladevorgangs im Speicher ist. Da mit der Ausführung des Makros LPOV nur ein Segment geladen wird, muss jedes Segment explizit geladen werden. Wenn der Makro LPOV ausgeführt wird, wird das angegebene Segment geladen, unabhängig davon, ob es schon im Speicher steht oder nicht. Der Makro LPOV hat keine Verbindung zum Überlagerungssteuermodul, und es wird keine Liste der augenblicklich im Speicher vorhandenen Überlagerungssegmente geführt.
Hinweise zum Makroaufruf
Nach dem Laden eines Segments durch den Makro LPOV können mit der Testhilfe AID mit
%ON %LPOV
noch Korrekturen vorgenommen werden (siehe Handbuch „AID“ [3]).Der Makro LPOV, mit dem das nicht-automatische Laden von Segmenten durchgeführt wird, verkehrt direkt mit dem Betriebssystem. Wenn LPOV zusammen mit den Makros CALL oder SEGLD (automatisches Laden von Segmenten) verwendet wird, kann die Statusliste der Programmüberlagerungsstruktur falsch sein; (siehe Handbuch „Dienstprogramme“ [27]). Ein solcher Fall kann während des Programmlaufes zu Fehlern führen.
Rückinformation und Fehleranzeigen
Wenn Fehler während des Ladens eines Überlagerungssegments auftreten, setzt der Ablaufteil das Programm mit dem LPOV folgenden Befehl fort. Tritt kein Fehler auf, so gilt die im Makroaufruf angegebene Fortsetzungsadresse.
R15:
+---------------+ | | | | | | | | | | | |a|a| +---------------+
Über die Ausführung des Makros LPOV wird im rechtsbündigen Byte des Registers R15 ein Returncode übergeben.
X'aa' | Erläuterung |
X'00' | Das Segment wurde geladen. |
X'04' | Falscher Nur-Lese-Modifikationssatz. |
X'08' | Falscher Satzcode im Text/Modifikationsblock oder es kommt vor dem 1. Textsatz ein |
X'0C' | Es sind zu viele Nur-Lese-Modifikationssätze vorhanden oder Segmentname kann in keinem |
X'10' | Es gibt keinen Indexsatz für Lademoduln mit dem Segmentnamen %ROOT. |
X'14' | Es ist nicht genügend Speicherplatz vorhanden, um das Segment zu laden. |
X'18' | Schlüsselinformation falsch oder Fehler beim Lesen von PAM-Lademoduldatei oder Fehler |
X'1C' | Falscher Segmentname. |
X'20' | Fehler beim Laden von AID. |
X'24' | Fehler beim Lesen eines C-Elements einer PLAM-Bibliothek. |