Allgemeines
Anwendungsgebiet: | Binden und Laden; siehe "Binden und Laden" |
Makrotyp: | S-Typ, MF-Format 2: Standardform/C-/D-/L-/E-/M-Form; siehe "S-Typ-Makroaufrufe" |
Zum dynamischen Bindelader DBL siehe auch Handbuch „BLSSERV“ [4].
Makrobeschreibung
Der Makro LDSLICE lädt eine Slice, die in einem LLM vom Benutzer definiert wurde, in den Hauptspeicher. Welche Slices das LLM aufbauen, definiert der Benutzer mit Anweisungen SET-USER-SLICE-POSITION (siehe Handbuch „BINDER“ [5]).
Makroaufrufformat und Operandenbeschreibung
LDSLICE |
[ { MODULE=name / MODULE@={adr / (r)} } ] [,MSG=*DBLOPT / INFORMATION / WARNING / ERROR / NONE ] ,{ NAME=name / NAME@={adr / (r)} } ,PATH=NO / YES ,RELOAD=NO / YES [,SLICE@=adr / (r) / label] ,MF=S / C / D / E / L / M [,PARAM=adr / (r)] ,PREFIX=P / p [,LABEL=name] |
In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.
LABEL=name
Angabe nur mit MF=M.
Name der Struktur, d.h. der DSECT, die den Datenbereich des LDSLICE-Makros beschreibt. Der Operand muss angegeben werden, wenn keine gültige USING-Anweisung für die Definition des Basisadressregisters für die DSECT des Datenbereichs angegeben ist.Der Operand LABEL muss zusammen mit dem Operanden PARAM angegeben werden. Beide Operanden werden benutzt, um eine gültige USING-Anweisung zu gewinnen.
Als Name kann angegeben werden:
Der Name der im Namensfeld eines vorhergehenden Makroaufrufs
name LDSLICE MF=D
angegeben wurde.Der Name „xSLICDS“, wenn bisher noch kein Name „name“ angegeben wurde. Dabei ist „x“ der Wert des Operanden PREFIX eines vorhergehenden Makroaufrufs
LDSLICE
MF=D,PREFIX=x
Der Standardwert von „x“ ist „P“.
Der Name der längeren DSECT, die den Datenbereich des LDSLICE-Makros enthält, wenn zuvor der Makroaufruf
LDSLICE MF=C
angegeben wurde.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. angegebenen Operanden PARAM und PREFIX siehe Abschnitt „S-Typ-Makroaufrufe“.Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
Bei der C-Form, D-Form oder M-Form des Makroaufrufs kann ein Präfix PREFIX angegeben werden (siehe Abschnitt „S-Typ-Makroaufrufe“).
MODULE=name
Gibt den internen Namen des (PAM-)LLM an, der beim Erzeugen des LLM festgelegt wurde (maximal 32 Zeichen). Der interne Name sollte immer dann angegeben werden, wenn mehrere LLMs mit benutzerdefinierten Slices im Hauptspeicher geladen sind. Fehlt der Operand MODULE, wählt der DBL das erste LLM aus, das die Slice enthält.
MODULE@=
Gibt die Adresse eines Feldes an, das den internen Namen des LLM enthält. Angabe nur mit MF=M.
=adr
Symbolische Adresse des Feldes, das den Namen enthält.
=(r)
r = Register mit dem Adresswert adr.
MSG=
Legt die niedrigste Meldungsklasse fest, ab der Meldungen ausgegeben werden. Der Default-Wert wird aus dem Ladeaufruf mit LOAD- oder START-EXECUTABLE-PROGRAM (bzw. LOAD- oder START-PROGRAM) übernommen.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos /MODIFY-DBL-PARAMETERS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt MSG=INFORMATION.
INFORMATION
Die Meldungen aller Meldungsklassen werden ausgegeben.
WARNING
Nur Meldungen der Meldungsklasse WARNING und ERROR werden ausgegeben. Nicht ausgegeben werden Meldungen der Meldungsklasse INFORMATION.
ERROR
Nur Meldungen der Meldungsklasse ERROR werden ausgegeben.
NONE
Keine Meldungen werden ausgegeben.
NAME=name
Gibt den Namen der Slice an, die geladen wird. Für „name“ ist der Name anzugeben, den der Benutzer beim Definieren der Slice in der Anweisung SET-USER-SLICE-POSITION angegeben hat (maximal 32 Zeichen lang).
Die angegebene Slice kann nur geladen werden, wenn die Root-Slice (%ROOT) geladen ist.
NAME@=
Gibt die Adresse eines Feldes an, das den Namen der Slice enthält, die geladen wird. Angabe nur mit MF=M.
adr
Symbolische Adresse des Feldes, das den Namen enthält.
(r)
r = Register mit dem Adresswert adr.
PATH=
Legt fest, ob nur die mit NAME angegebene Slice geladen wird oder ob zusätzlich zur Slice NAME alle „höheren“ Slices im selben Ast (zwischen Root-Slice und der Slice NAME) geladen werden.
NO
Die mit NAME angegebene Slice wird geladen.
YES
Alle höheren Slices im selben Ast werden zusätzlich zur Slice NAME geladen.
RELOAD=
Legt fest, ob eine Slice, die bereits im Hauptspeicher geladen ist, wiedergeladen wird.
NO
Eine bereits geladene Slice wird nicht wiedergeladen.
YES
Eine bereits geladene Slice wird wiedergeladen und überschreibt die vorhergehende Slice im Hauptspeicher.
SLICE@=
Gibt die Adresse eines 4 Byte langen Feldes an, in das der DBL die Ladeadresse der Slice übergibt. Die übergebene Adresse bezieht sich auf das erste Byte der Slice, die mit NAME festgelegt wurde. Das Feld muss auf Wortgrenze ausgerichtet sein und Schreibzugriff haben.
Fehlt der Operand SLICE@ wird die Ladeadresse der Slice nicht übergeben.
adr
Symbolische Adresse des Feldes. Angabe nur mit MF=M.
(r)
r = Register mit dem Adresswert adr. Angabe nur mit MF=M.
label
Direkte Angabe der symbolischen Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
Regeln für das Laden von Slices
Die Slice, die geladen werden soll, muss Teil der physikalischen Struktur sein, für die die Root-Slice geladen wurde.
Die Root-Slice muss bereits mit dem Kommando START-PROGRAM bzw.LOAD-PROGRAM oder mit dem Makroaufruf BIND geladen worden sein.
Rückinformation und Fehleranzeigen
Falls ein Feld mit dem Operanden SLICE@ angegeben wurde, übergibt der DBL die Ladeadresse der Slice.
Standardheader:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
Über die Ausführung des Makros LDSLICE wird im Standardheader folgender Returncode übergeben (cc=Subcode2, bb=Subcode1, aaaa=Maincode):
X'cc' | X'bb' | X'aaaa' | Erläuterung |
X'00' | X'00' | X'0000' | Der Makro wurde normal ausgeführt. |
X'0C' | X'01' | X'0018' | Ein reserviertes Feld des Datenbereichs ist nicht mit Nullen vorbelegt. |
X'0C' | X'01' | X'0100' | Ungültige Parameterliste: Pflichtoperand NAME fehlt. |
X'0C' | X'20' | X'0102' | Das angegebene Modul wurde nicht gefunden. |
X'0C' | X'01' | X'0104' | Die angegebene Slice wurde nicht gefunden. |
X'00' | X'00' | X'0108' | Die angegebene Slice ist bereits geladen. |
X'0C' | X'01' | X'010C' | Das mit SLICE@ festgelegte Feld ist nicht auf Wortgrenze ausgerichtet. |
X'0C' | X'01' | X'0110' | Das mit SLICE@ festgelegte Feld hat nur Lesezugriff oder ist nicht |
X'0C' | X'20' | X'0198' | Nicht genügend Speicherplatz vorhanden, um das Objekt zu laden. |
X'0C' | X'40' | X'0204' | Interner Fehler im Memory Management. |
X'0C' | X'40' | X'0208' | Interner Fehler im Data Manager. |
X'0C' | X'20' | X'0300' | Fehler während eines Systemaufrufs. |
X'00' | X'01' | X'FFFF' | Die Funktion wird nicht mehr oder noch nicht unterstützt. |
X'00' | X'03' | X'FFFF' | Die Version der Schnittstelle wird nicht unterstützt. |
Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.