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 BIND bindet eine weitere Ladeeinheit in das ablaufende Programm ein.
Makroaufrufformat und Operandenbeschreibung
BIND |
,ALTLIB=*DBLOPT / NO / YES / list-poss(2): *TASKLIB / *BLSLIB##
[,AMODE@=adr / (r) / label]
[,AMODCHK = *DBLOPT / STD / ADVANCED]
,AUTOLNK=*DBLOPT / YES / NO / ALTLIB
,BRANCH=NO / YES
,CLOSE=*DBLOPT / ALL / NONE / ALT
,ERREXIT=*DBLOPT / adr / (r) / label
,IGNATTR=*DBLOPT / NONE / READ
,INTVERS=BLSP2 / SRV001 / SRV002 / SRV003 / SRV004 / SRV005 / SRV006
[,LDINFO=*DBLOPT / DEF / MAP / NONE / REF ]
,{LIBNAM@={adr / (r) / label} / LIBNAM={*DBLOPT / datei / *} / LIBLINK=name}
,{LNKCTX@={adr / (r) / label} / LNKCTX={*DBLOPT / name}}
,LNKCTXS=*DBLOPT / ANY / OLD / NEW
,LOAD=YES / NO / ILESERVER
[,LOAD@=adr / (r) / label]
,MAP=*DBLOPT / NO / BOTH / (BOTH,nn) / nn / SYSOUT
[,MPID=adr / (r) / label]
[,MSG=*DBLOPT / INFORMATION / WARNING / ERROR / NONE]
[,NACOL=*DBLOPT / STD / ABORT]
,OVERLAY=NO / YES
,{PGMVER@={adr / (r) / label} / PGMVERS={*DBLOPT / *STD / version}
,PROGMOD=*DBLOPT / ANY / 24
[,PURESOR= list-poss(3): USERSHARE / SYSSHARE / LNKCTX ]
[ ,PURESTY=*DBLOPT / STD / USER]
[, {REFCTX@={adr / (r) / label} / REFCTX={name / (name1,name2,...name200)}]
,REFCTX#=0 / n
,{REPFIL@={adr / (r) / label} / REPFILE={*DBLOPT / file}}
,REPSCOP=*DBLOPT / CONTEXT / UNIT
[,RESORD= list-poss(4): LNKCTX / USERSHARE / SYSSHARE / REFCTX ]
,RESTYP=*DBLOPT / STD / USER
,SHARE=*DBLOPT / SYSTEM / NONE / USER / GROUP / USER_GROUP / GLOBAL / ALL
, {SYMBOL@={adr / (r) / label} / SYMBOL= {name / *ALL}}, SYMBLAD={adr / (r) / label}
,SYMTYP=ANY / CSECT / ENTRY / CSEN / MODULE
[,TSTOPT=*DBLOPT / NONE / AID]
[,{ UNIT@={adr / (r) / label} / UNIT= name}]
[,UNRES=*DBLOPT / STD / DELAY / DELAYWARN / ABORT]
,USRMAPI = NONE / STD / ALL
[,USRMAP@ = adr / (r) / <label> ]
[,USRMAPL = integer 1..21474836479]
[,USRUNR@ = adr / (r) / label]
[,USRUNRL = integer 1..21474836479]
,USRUNRI = STD / DELAY / BOTH
[, {VERS@={adr / (r) / label} / VERS=version}]
,XPAND=PARAM / XRC / USRMAP / USRUNR
[,XRC=adr / (r) / label]
In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.
ALTLIB=
Legt fest, ob alternative Bibliotheken oder Tasklibs nach dem mit SYMBOL@ oder SYMBOL vereinbarten Objekt durchsucht werden. Alternative Bibliotheken werden mit dem Dateikettungsnamen BLSLIBnn (00<=nn<=99) bzw. $BLSLBnn zugewiesen. Sie werden auch für die Autolink-Funktion des DBL benutzt.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt ALTLIB=NO.
NO
Alternative Bibliotheken und/oder Tasklibs werden nicht durchsucht.
YES
Alternative Bibliotheken werden durchsucht.
*TASKLIB
Darf nur mit INTVERS=SRVxxx und xxx >= 002 angegeben werden.
Tasklibs werden in folgender Reihenfolge durchsucht:
Die Bibliothek, die mit dem Kommando SET-TASKLIB zugewiesen wurde
Die Bibliothek $userid.TASKLIB
oder, falls diese nicht existiert:
Die Bibliothek TASKLIB unter der System-Standardkennung (DEFLUID-Kennung)
*BLSLIB##
Darf nur zusammen mit INTVERS=SRVxxx und xxx >= 002 angegeben werden.
Alternative Bibliotheken werden durchsucht.
Hinweise
Die Operandenwerte *TASKLIB und *BLSLIB## können als Liste angegeben werden. Die Reihenfolge dieser Werte in der Liste legt die Reihenfolge fest, in der die entsprechenden Bibliotheken durchsucht werden.
Die Angaben ALTLIB=YES und ALTLIB=BLSLIB## haben dieselbe Bedeutung.
Die Operanden ALTLIB=YES und LIBNAM@/LIBNAM/LIBLINK dürfen zusammen angegeben werden. Ist jedoch die mit den Operanden LIBNAM@/LIBNAM/LIB-LINK angegebene Hauptbibliothek nicht vorhanden, bricht der DBL die Verarbeitung ab. Die Angabe ALTLIB=YES dient nicht als Ersatz für die fehlende oder ungültige Hauptbibliothek.
AMODCHK=
Bestimmt, ob während des Ladens zusätzliche Prüfungen des Adressierungsmodus stattfinden (nur zusammen mit INTVERS=SRVxxx und xxx >= 005). Fehlt der Operand AMODCHK, wird als Standardwert der eingestellte Wert aus dem Ladeaufruf START-EXECUTABLE-PROGRAM bzw. LOAD-EXECUTABLE-PROGRAM (oder START-PROGRAM bzw. LOAD-PROGRAM) übernommen.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt AMODCHK=STD.
STD
Es werden nur die zu BLSSERV < V2.5 kompatiblen Prüfungen durchgeführt.
ADVANCED
Es werden die Prüfungen wie bei AMODE-CHECK = *STD durchgeführt.
Zusätzlich wird während des Ladens geprüft, ob sich durch den Adressierungsmodus der Ladeeinheit Inkonsistenzen beim Auflösen der Externverweise ergeben können.
AMODE@=
Gibt die Adresse eines 1 Byte langen Feldes an, in das der DBL den Adressierungsmodus für den Aufruf der Ladeeinheit einträgt. Das Feld muss auf Wortgrenze ausgerichtet sein. Mögliche Werte für den Adressierungsmodus sind:2 für AMODE 24
1 für AMODE 31
4 für AMODE 32
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält. Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
AUTOLNK=
Legt fest, ob die Autolink-Funktion des DBL eingeschaltet oder ausgeschaltet wird.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt AUTOLNK=YES.
YES
Die Autolink-Funktion wird eingeschaltet.
NO
Die Autolink-Funktion wird ausgeschaltet. Externverweise werden nur durch bereits geladene Programme (private und gemeinsam benutzbare) befriedigt.
ALTLIB
Die Autolink-Funktion greift nur auf alternative Bibliotheken zu, die mit dem Dateikettungsnamen BLSLIBnn (00<=nn<=99) oder $BLSLBnn zugewiesen sind.
BRANCH=
Legt fest, ob unmittelbar nach dem Laden der Ladeeinheit das aufrufende Programm weiter ausgeführt wird oder ob die geladene Ladeeinheit verarbeitet wird. Der Adressierungsmodus wird vom DBL eingestellt.
NO
Nach dem Laden der Ladeeinheit wird im aufrufenden Programm der dem Makroaufruf BIND folgende Befehl ausgeführt.
YES
Nach dem Laden wird zuerst die geladene Ladeeinheit verarbeitet. Die Adresse bestimmt der DBL aus dem mit SYMBOL@ oder SYMBOL angegebenen Symbolnamen bzw. Modulnamen.
CLOSE=
Legt fest, ob vom DBL benutzte Bibliotheken am Ende der Bearbeitung des DBL-Aufrufs geschlossen werden oder eröffnet bleiben. Dies sind alle Bibliotheken, die vom DBL nach Modulen durchsucht werden. Der Operand kann benutzt werden, um die Verarbeitung zu beschleunigen, wenn der DBL mehrmals mit derselben Bibliothek aufgerufen wird.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt CLOSE=ALL.
ALL
Alle benutzten Bibliotheken werden geschlossen.
NONE
Alle benutzten Bibliotheken bleiben eröffnet. Sie können für einen weiteren Aufruf des DBL verwendet werden.
ALT
Alle benutzten alternativen Bibliotheken werden geschlossen. Nur die Hauptbibliothek, die mit dem Operanden LIBNAM@, LIBNAM oder LIBLINK angegeben wurde, bleibt eröffnet.
ERREXIT=
Legt die Adresse eines 4 Byte langen Feldes fest.
In diesem Feld ist die Adresse einzutragen, die unbefriedigte Externverweise erhalten sollen, falls der Operand UNRES mit dem Wert STD/DELAY/DELAYWARN angegeben ist.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, erhalten unbefriedigte Externverweise die Adresse X'FFFFFFFF'.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält. Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder L.
IGNATTR=
Gibt an, welche CSECT-Attribute beim Laden ignoriert werden.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt IGNATTR=NONE.
NONE
Alle CSECT-Attribute werden beim Laden beachtet.
READ
Das CSECT-Attribut READ-ONLY wird beim Laden ignoriert. Die CSECT wird in eine lese-/schreibbare Hauptspeicherseite geladen. Dadurch wird z.B. das Setzen von Haltepunkten beim Testen mit AID ermöglicht.
INTVERS=
Der Operand legt die Version der Makro-Schnittstelle BIND fest.
BLSP2
Default. Entspricht der Makro-Version 5.
SRV001
Entspricht der Makro-Version 6. Diese Version wird ab BLSSERV V2.2 unterstützt.
SRV002
Entspricht der Makro-Version 7. Diese Version wird ab BLSSERV V2.3A unterstützt.
SRV003
Entspricht der Makro-Version 8. Diese Version wird ab BLSSERV V2.3B unterstützt.
SRV004
Entspricht der Makro-Version 9. Diese Version wird ab BLSSERV V2.4A unterstützt.
SRV005
Entspricht der Makro-Version 10. Diese Version wird ab BLSSERV V2.5A unterstützt.
SRV006
Entspricht der Makro-Version 11. Diese Version wird ab BLSSERV V2.6A unterstützt.
LABEL=nameAngabe nur mit MF=M
Name der Struktur, d.h. der DSECT, die die Operanden des BIND-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 Operand 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 BIND MF=D
angegeben wurde.Der Name „xPBBNDS“, wenn bisher noch kein Name „name“ angegeben wurde. Dabei ist „x“ der Wert des Operanden PREFIX eines vorhergehenden Makroaufrufs
BIND MF=D, PREFIX=x
. Der Standardwert von „x“ ist „P“.Der Name der längeren DSECT, die den Datenbereich des BIND-Makros enthält, wenn zuvor der Makroaufruf
BIND MF=C
angegeben wurde.
LDINFO=
Legt die Ladeinformation der Ladeeinheit fest.
Fehlt der Operand LDINFO, wird als Standardwert der eingestellte Wert aus dem Ladeaufruf START-EXECUTABLE-PROGRAM bzw. LOAD-EXECUTABLE-PROGRAM (oder START-PROGRAM bzw. LOAD-PROGRAM) übernommen
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt der Wert, der in der Makro-Syntaxbeschreibung auf *DBLOPT folgt.
DEF
Ein Externadressbuch, das die Programmdefinitionen aller Module der Ladeeinheit enthält, wird geladen.
Programmdefinitionen sind Programmabschnitte (CSECTs), Einsprungstellen (ENTRYs), COMMON-Bereiche, Pseudoabschnitte (DSECTs), Externe Pseudoabschnitte (XDSECs-D) und Modulnamen.
MAP
Nur ein Externadressbuch, das für den Aufbau der DBL-Liste notwendig ist, wird temporär geladen. Das Externadressbuch wird entladen, sobald die DBL-Liste aufgebaut ist.
NONE
Es wird kein Externadressbuch geladen.
REF
Ein Externadressbuch, das zusätzlich zu den Programmdefinitionen die befriedigten Referenzen aller Module der Ladeeinheit enthält, wird geladen. Referenzen sind Externverweise (EXTRNs), V-Konstanten, bedingte Externverweise (WXTRNs) und Externe Pseudoabschnitte (XDSECs-R).
LIBLINK=name
Dateikettungsname der Hauptbibliothek. Der Name darf maximal 8 Zeichen lang sein.
LIBNAM@=
Legt die Hauptbibliothek fest, in der das mit SYMBOL@ oder SYMBOL vereinbarte Objekt gesucht wird. Die Hauptbibliothek wird festgelegt durch die Adresse eines Feldes, das den Dateinamen der Bibliothek enthält. Die EAM-Bindemoduldatei wird durch den Dateinamen „*“ festgelegt. Ein Dateikettungsname ist für die EAM-Bindemoduldatei nicht möglich.
Die Hauptbibliothek wird vor den alternativen Bibliotheken durchsucht (siehe "BIND - Ladeeinheit binden und laden"). Sie wird auch für die Autolink-Funktion des DBL benutzt. Ist der Operand LIBLINK angegeben, wird LIBNAM@ ignoriert.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
LIBNAM=
Dateiname der Hauptbibliothek. Angabe nur mit MF=S oder MF=L. Ist der Operand LIBLINK angegeben, wird LIBNAM ignoriert.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, wird die Bibliothek mit dem Dateikettungsnamen BLSLIB durchsucht.
datei
Explizite Angabe des Dateinamens der Hauptbibliothek. Der Dateiname darf maximal 54 Zeichen lang sein.
*
Vereinbart als Hauptbibliothek die EAM-Bindemoduldatei.
LNKCTX@=
Gibt die Adresse eines Feldes an, das den Namen des Link-Kontext enthält. Der Name muss mit einem Buchstaben beginnen.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält. Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
LNKCTX=
Angabe nur mit MF=S oder MF=L.
name
Explizite Angabe des Namens für den Link-Kontext.
Der Name darf maximal 32 Zeichen lang sein und muss mit einem Buchstaben beginnen.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, wird der Link-Kontext „LOCAL#DEFAULT“ verwendet.
LNKCTXS=
Legt fest, ob der neue über LNKCTX@ oder LNKCTX definierte Link-Kontext unter den bereits vorhandenen Benutzerkontexten existieren darf oder nicht.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt LNKCTXS=ANY.
ANY
Falls ein Benutzerkontext mit dem beim Operanden LNKCTX@ oder LNKCTX angegebenen Namen vorhanden ist, wird dieser benutzt.
Wenn kein gleichnamiger Kontext vorhanden ist, wird ein neuer Kontext angelegt.
OLD
Der angegebene Link-Kontext muss bereits existieren. Es wird kein neuer Kontext angelegt.
NEW
Der angegebene Link-Kontext darf noch nicht existieren. Ein neuer Kontext wird erzeugt.
LOAD=
Legt fest, ob ein Symbol mit dem Symbolnamen SYMBOL@ oder SYMBOL geladen werden soll oder ob das Laden eines ILE-Servermoduls gefordert ist. Davon ist abhängig, ob der DBL beim Suchen nach der Primäreingabe Symbole des Typs ILE berücksichtigt.
YES
Das Symbol wird geladen, falls es noch nicht geladen ist. ILE-Symbole werden einbezogen.
NO
Das Symbol wird nicht geladen. Falls es bereits geladen ist, wird die Ladeadresse vom DBL übergeben. ILE-Symbole werden einbezogen.
Der Aufruf BIND ...,LOAD=NO sollte aus Performance-Gründen durch den Aufruf VSVI1 ...,SELECT=BYNAME ersetzt werden.
ILESERVER
Das zu ladende Symbol ist der Eintrittspunkt eines ILE-Servermoduls. ILE-Symbole werden deshalb übergangen.
LOAD@=
Gibt die Adresse eines Bereichs unterhalb 16 MB im Klasse-6-Speicher an, ab der das erste Modul geladen werden soll. Falls noch weitere Module vorhanden sind, werden sie in einem freien Bereich hinter dem ersten Modul geladen.
Wenn die Adresse oberhalb 16 MB im Klassse-6-Speicher liegt, wird der Operand LOAD@ übergangen und der Operand OVERLAY auf NO gesetzt. Das Laden wird nicht durchgeführt wenn:
die Adresse nicht auf Doppelwortgrenze ausgerichtet ist oder eine unzulässige Adresse im Klasse-6-Speicher angegeben wurde,
der Benutzer mehrere Kontexte im Klasse-6-Speicher definiert hat,
der Bereich im Klasse-6-Speicher, in dem das erste Modul geladen werden soll, bereits belegt ist und der Operand OVERLAY=NO angegeben wurde,
ein LLM entweder als erstes Modul oder durch Autolink geladen wurde,
gleichzeitig der Operand MPID angegeben wurde.
Falls der Operand LOAD@ nicht angegeben wird, bestimmt der DBL die Ladeadresse. Wurde beim Speichern eines LLM eine Ladeadresse angegeben, wird das LLM ab dieser Adresse geladen, falls dies möglich ist.
adr
Adresse eines Feldes, das die Bereichsadresse enthält. Angabe nur mit MF=M.
(r)
r = Register mit der Bereichsadresse. Angabe nur mit MF=M.
label
Bereichsadresse. Sie kann als symbolische Adresse oder als Konstante (X'...') angegeben werden. Angabe nur mit MF=S oder MF=L.
MAP=
Legt fest, ob eine DBL-Liste ausgegeben wird oder nicht und gibt das Ausgabeziel für die DBL-Liste an.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt MAP=NO.
NO
Es wird keine DBL-Liste ausgegeben.
BOTH
Das Ausgabeziel ist die Systemdatei SYSOUT und die Systemdatei SYSLST00.
(BOTH,nn)
Das Ausgabeziel ist die Systemdatei SYSOUT und eine Systemdatei SYSLSTnn (00<=nn<=99).
nn
Das Ausgabeziel ist eine Systemdatei aus der Menge SYSLST00 bis SYSLST99, deren Nummer hier anzugeben ist.
Die Nummer muss 2-stellig angegeben werden (00 für 0 usw.).
SYSOUT
Das Ausgabeziel ist die Systemdatei SYSOUT.
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 oder D-Form des Makroaufrufs kann ein Präfix PREFIX angegeben werden (siehe Abschnitt „S-Typ-Makroaufrufe“).
MPID=
Adresse eines 4 Byte langen Feldes, das die Kurzkennung des Memory Pools enthält, in den die Ladeeinheit geladen wird.
Diese Kurzkennung wird dem Benutzer durch den Makroaufruf ENAMP zur Verfügung gestellt.
Der Operand darf nicht angegeben werden:
wenn die Operanden LOAD@ und OVERLAY angegeben sind,
wenn ein LLM geladen wird, der benutzerdefinierte Slices enthält.
Für die Verwaltung des Memory Pools ist der Benutzer verantwortlich. Der DBL übergibt Informationen über die geladene Ladeeinheit im Memory Pool nur an den Benutzer, der den Makro BIND aufgerufen hat.
Innerhalb eines Benutzerkontexts können mehrere Ladeeinheiten in einen Memory Pool geladen werden. Zum Laden von Shared Code in Memory Pools, der dort als gemeinsam benutzbar zur Verfügung gestellt werden soll, muss der Makro ASHARE aufgerufen werden.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält. Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
MSG=
Legt die niedrigste Meldungsklasse fest, ab der Meldungen ausgegeben werden. Fehlt der Operand MSG, wird als Standardwert der eingestellte Wert aus dem Ladeaufruf START-EXECUTABLE-PROGRAM bzw. LOAD-EXECUTABLE-PROGRAM (oder START-PROGRAM bzw. LOAD-PROGRAM) übernommen.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt der Wert, der in der Makro-Syntaxbeschreibung auf *DBLOPT folgt.
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.
NACOL=
Legt fest, wie Namenskonflikte bei Symbolen mit gleichem Namen behandelt werden. Namenskonflikte werden nur entdeckt, wenn die Symbole nicht maskiert sind.
Fehlt der Operand NACOL, wird als Standardwert der eingestellte Wert aus dem Ladeaufruf START-PROGRAM bzw. LOAD-PROGRAM übernommen.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt NACOL=STD.
STD
Namenskonflikte zwischen nicht maskierten Symbolen werden durch Warnungsmeldungen angezeigt. Das Modul, das das Symbol mit dem gleichen Namen enthält, wird geladen. Die neue Ausprägung des Symbols wird maskiert, d.h. es wird nicht mehr benutzt, um Externverweise zu befriedigen.
ABORT
Das Laden der aktuellen Ladeeinheit wird abgebrochen, wenn eine Namenskollision zwischen nicht maskierten Symbolen entdeckt wird.
OVERLAY=
Legt fest, ob die Module der Ladeeinheit das Modul überlagern dürfen, das an der mit LOAD@ angegebenen Adresse steht. Der Operand erfordert die Angabe des Operanden LOAD@ und ist unvereinbar mit dem Operanden MPID.
NO
Die Module der Ladeeinheit dürfen das Modul nicht überlagern, das an der mit LOAD@ angegebenen Adresse steht.
YES
Die Module der Ladeeinheit dürfen das Modul überlagern. Das erste Modul der Ladeeinheit wird ab der mit LOAD@ angegebenen Adresse geladen. Falls noch weitere Module vorhanden sind, werden sie lückenlos anschließend geladen. Ausgenommen sind Bereiche, die durch CSECT-Attribute READ-ONLY und
PAGEABLE gesperrt sind. Der Benutzer muss dafür sorgen, dass der überlagerte Bereich später nicht mehr gebraucht wird.
Alle Module, die von den Modulen der Ladeeinheit überlagert werden, werden vom DBL entladen. Der benützte Speicherinhalt wird jedoch vor dem erneuten Laden nicht gelöscht.
COMMON-Bereiche werden unabhängig von der angegebenen Ladeadresse geladen.
PGMVER@=
Gibt die Adresse eines Feldes an, das die Programmversion enthält. Wenn diese Version des Programms bereits geladen ist, wird eine Verbindung dazu aufgebaut. Ist diese Programmversion noch nicht geladen, dann erhält die neue Ladeeinheit die angegebene Version.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
PGMVERS=
Gibt die Programmversion an.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt PGMVERS=*STD.
*STD
Die aus dem Ladeaufruf resultierende Ladeeinheit erhält als Programmversion die Version des geladenen Bibliothekselements. Wenn das im Ladeaufruf angegebene Symbol bereits geladen ist, wird die Programmversion gesucht, die mit dem Kommando SELECT-PROGRAM-VERSION festgelegt wurde. Falls noch keine Programmversion festgelegt ist, verwendet DBL das zuerst gefundene Symbol.
version
Die Versionsangabe darf maximal 24 Zeichen lang sein.
PROGMOD=
Legt fest, in welchen Teil des Adressraums (oberhalb oder unterhalb 16 MByte) die Module der Ladeeinheit geladen werden.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt PROGMOD=ANY.
ANY
Die Module der Ladeeinheit können ober- oder unterhalb 16 MByte geladen werden.
24
Die gesamte Ladeeinheit wird unterhalb 16 MB geladen.
Die Programmausführung erfolgt im 24-Bit-Adressierungsmodus.Externverweise werden als 24-Bit-Adressen interpretiert.
PURESOR=
Legt die benutzerdefinierte Suchreihenfolge bei der Befriedigung von Externverweisen in PUBLIC-Teilen von LLMs fest, falls PURESTY=USER angegeben wurde (nur zusammen mit INTVERS=SRVxxx und xxx >= 001).
list-poss(3): USERSHARE / SYSSHARE / LNKCTX
Die Suchreihenfolge wird durch die Reihenfolge der Schlüsselwörter in der Liste festgelegt. Die Schlüsselwörter haben folgende Bedeutung:
USERSHARE | für Shared Code des Benutzers |
SYSSHARE | für Shared Code des Systems |
LNKCTX | für Link-Kontext |
Wenn beispielsweise PURESOR=(SYSSHARE, LNKCTX, USERSHARE) angegeben ist, wird bei der Befriedigung von Externverweisen in PUBLIC-Teilen in folgender Reihenfolge gesucht:
im Shared Code des Systems
im Link-Kontext
und schließlich im Shared Code des Benutzers.
Hinweise
Jedes Schlüsselwort darf nur ein einziges Mal in der Liste vorkommen.
Schlüsselwörter, die in der Liste nicht angegeben sind, werden intern vom DBL entsprechend der vordefinierten Reihenfolge (USERSHARE, SYSSHARE, LNKCTX) ans Ende der Liste angehängt. So wird z. B. die Angabe PURESOR=(SYSSHARE) wie PURESOR=(SYSSHARE, USERSHARE, LNKCTX) behandelt.
Die Operanden PURESTY und PURESOR haben keinen Einfluß darauf, welche Kontexte durchsucht werden. Sie bestimmen ausschließlich die Reihenfolge. Ob Shared Code durchsucht wird, muss mit dem Operanden SHARE festgelegt werden. Der DBL führt auch keine Konsistenzprüfung dieser Operanden durch. Wenn zum Beispiel PURESOR=(LNKCTX, SYSSHARE), SHARE=NONE angegeben ist, wird der Shared Code des Systems nicht zur Befriedigung von Externverweisen herangezogen, obwohl das entsprechende Schlüsselwort in der Liste der Suchreihenfolge angeben ist.
PURESTY=
Legt die Suchstrategie für die Befriedigung von Externverweisen in PUBLIC-Teilen von LLMs fest (nur zusammen mit INTVERS=SRVxxx und xxx >= 001).
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt PURESTY=STD.
STD
Es gilt die von DBL vordefinierte Suchreihenfolge:
Shared Code des Benutzers
Shared Code des Systems
Link-Kontext
USER
Die Suchreihenfolge wird vom Benutzer mit dem Operanden PURESOR festgelegt.
REFCTX@=
Gibt die Adresse eines Feldes an, das eine Namensliste von Referenz-Kontexten enthält, die zum Befriedigen von Externverweisen durchsucht werden.
In die Liste können maximal 200 Namen von Referenz-Kontexten eingetragen werden. Ein Name darf nicht mit dem Zeichen „$“ beginnen.
Die in der Liste angegebenen Kontexte müssen vorhanden sein. Die Referenz-Kontexte werden in der Reihenfolge durchsucht, wie sie in der Liste angegeben sind. Mit dem Operanden REFCTX# kann die Anzahl der Referenz-Kontexte festgelegt werden. Ein mit LNKCTX@ oder LNKCTX definierter Link-Kontext kann nicht als Referenz-Kontext benutzt werden.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält. Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
REFCTX=name / (name1,...,name200)
Angabe nur mit MF=S oder MF=L.
Explizte Angabe einer Liste für die Namen von Referenz-Kontexten.
Jeder Name darf maximal 32 Zeichen lang sein. Bis zu 200 Namen dürfen in die Liste eingetragen werden. Die Namen müssen mit einem Buchstaben beginnen.
REFCTX#=0 / n
Legt die Anzahl der Referenz-Kontexte in der mit REFCTX@ oder REFCTX definierten Namensliste fest.0<=n<=200; Standardwert: 0
REPFIL@=
Gibt die Adresse eines Feldes an, das den Dateinamen einer REP-Datei enthält.
Der Benutzer hat damit die Möglichkeit, REP-Sätze auf die Module einer Ladeeinheit anzuwenden. Die REP-Sätze müssen das Format haben, das vom Dienstprogramm RMS verarbeitet wird (siehe Handbuch „Dienstprogramme“ [27]). Tritt ein Fehler bei der Verarbeitung von REP-Sätzen auf, wird eine Warnungsmeldung ausgegeben und der fehlerhafte REP-Satz wird übergangen. Anschließend wird die REP-Verarbeitung fortgesetzt.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält. Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
REPFILE=
Angabe nur mit MF=S oder MF=L.
Legt den Dateinamen der REP-Datei fest.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, wird keine REP-Datei verwendet.
datei
Explizite Angabe des Dateinamens der REP-Datei. Der Name darf maximal 54 Zeichen lang sein.
REPSCOP=
Legt fest, ob die REP-Verarbeitung für alle Module im Kontext oder nur für die Module der aktuellen Ladeeinheit durchgeführt wird.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt REPSCOP=CONTXT.
CONTEXT
Die REP-Verarbeitung wird für alle Module im Kontext durchgeführt.
UNIT
Die REP-Verarbeitung wird nur für die Module der aktuellen Ladeeinheit durchgeführt. Alle übrigen Module im Kontext werden übergangen.
RESORD=
Angabe der benutzerdefinierten Suchreihenfolge bei der Befriedigung von Externverweisen, falls RESTYP=USER angegeben wurde (nur zusammen mit INTVERS=SRVxxx und xxx >= 001).
list-poss(4): LNKCTX / USERSHARE / SYSSHARE / REFCTX
Die Suchreihenfolge wird durch die Reihenfolge der Schlüsselwörter in der Liste festgelegt. Die Schlüsselwörter haben folgende Bedeutung:
LNKCTX | für Link-Kontext |
USERSHARE | für Shared Code des Benutzers |
SYSSHARE | für Shared Code des Systems |
REFCTX | für Referenz-Kontext |
Wenn beispielsweise RESORD=(REFCTX, USERSHARE, SYSSHARE, LNKCTX) angegeben ist, wird bei der Befriedigung von Externverweisen in folgender Reihenfolge gesucht:
im Referenz-Kontext
im Shared Code des Benutzers
im Shared Code des Systems
und schließlich im Link-Kontext.
Hinweise
Jedes Schlüsselwort darf nur ein einziges Mal in der Liste vorkommen.
Schlüsselwörter, die in der Liste nicht angegeben sind, werden intern vom DBL entsprechend der vordefinierten Reihenfolge (LNKCTX, USERSHARE, SYSSHARE, REFCTX) ans Ende der Liste angehängt. So wird z. B. die Angabe RESORD=(REFCTX, USERSHARE) wie RESORD=(REFCTX, USERSHARE, LNKCTX, SYSSHARE) behandelt.
Die Operanden RESTYP und RESORD haben keinen Einfluß darauf, welche Kontexte durchsucht werden. Sie bestimmen ausschließlich die Reihenfolge. Ob Shared Code oder Referenz-Kontext durchsucht wird, muss mit dem Operanden SHA-RE bzw. REFCTX (oder REFCTX@) festgelegt werden. Der DBL führt auch keine Konsistenzprüfung dieser Operanden durch. Wenn zum Beispiel RESORD=(LNK-CTX, SYSSHARE), SHARE=NONE angegeben ist, wird der Shared Code des Systems nicht zur Befriedigung von Externverweisen herangezogen, obwohl das entsprechende Schlüsselwort in der Liste der Suchreihenfolge angegeben ist.
RESTYP=
Legt die Suchstrategie für die Befriedigung von Externverweisen fest (nur zusammen mit INTVERS=SRVxxx und xxx >= 001).
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt RESTYP=STD.
STD
Es gilt die von DBL vordefinierte Suchreihenfolge:
Link-Kontext
Shared Code des Benutzers
Shared Code des Systems
Referenz-Kontext(e)
USER
Die Suchreihenfolge wird vom Benutzer mit dem Operanden RESORD festgelegt.
SHARE=
Legt fest, welcher Teil des Shared Code in die Suche nach dem mit SYMBOL@ bzw. SYMBOL angegebenen Symbol und beim Befriedigen von Externverweisen einbezogen wird. Dies gilt auch für die Autolink-Funktion des DBL, falls AUTOLNK=YES angegeben wird. Befindet sich das gesuchte Symbol in einem Common Memory Pool, gibt der DBL die Ladeadresse zurück, verbindet die Benutzertask mit dem Common Memory Pool und beendet den Ladevorgang. Befindet sich das gesuchte Symbol in einem nichtprivilegierten Subsystem (siehe Handbuch „Verwaltung von Subsystemen“ [12]), gibt der DBL die Ladeadresse ebenfalls zurück, baut eine Verbindung zum Subsystem auf und beendet den Ladevorgang. Bei BRANCH=YES wird danach zur Adresse des gefundenen Symbols verzweigt.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt SHARE=SYSTEM.
SYSTEM
Nur der Shared Code des Systems (im Klasse-3/4/5-Speicher) wird beim Suchen berücksichtigt.
NONE
Kein Shared Code wird beim Suchen berücksichtigt. Der DBL veranlasst das Laden einer privaten Kopie des Programmes.
USER
Nur Shared Code des Benutzers in Common Memory Pools wird beim Suchen berücksichtigt. Dabei spielt es keine Rolle, welchen Geltungsbereich der Common Memory Pool hat.
GROUP
Nur der Shared Code in Common Memory Pools mit dem Geltungsbereich GROUP wird beim Suchen berücksichtigt.
USER_GROUP
Nur der Shared Code in Common Memory Pools mit dem Geltungsbereich USER_GROUP wird beim Suchen berücksichtigt.
GLOBAL
Nur der Shared Code in Common Memory Pools mit dem Geltungsbereich GLOBAL wird beim Suchen berücksichtigt.
ALL
Sowohl der Shared Code des Systems als auch der Shared Code des Benutzers wird beim Suchen berücksichtigt.
SYMBLAD=
Gibt die Adresse eines auf Wortgrenze ausgerichteten, 4 Byte langen Feldes an. In dieses Feld trägt DBL die Adresse ein, an der der Programmlauf fortgesetzt werden muss, wenn die Ladeeinheit referenziert wird.
Diese Adresse hängt vom Operanden SYMTYP ab:
Wenn SYMTYP=MODULE oder SYMTYP=ANY angegeben ist und ein Modul mit dem Namen nachgeladen wird, der mit dem Operanden SYMBOL (bzw. SYMBOL@) festgelegt wurde, dann ist die Adresse die Startadresse des Moduls (LLM oder OM). Näheres zur Berechnung der Startadresse von LLMs siehe Handbuch "BINDER" [5]. Wenn die Startadresse eines LLMs ein externer Name ist, wird die Adresse dieser CSECT bzw. des ENTRYs eingetragen.
In allen anderen Fällen (falls SYMTYP=CSECT, ENTRY oder CSEN angegeben ist bzw. wenn SYMTYP=MODULE oder SYMTYP=ANY angegeben ist und ein Modul mit einem anderen Namen nachgeladen wird, als mit dem Operanden SYMBOL (bzw. SYMBOL@) festgelegt wurde) ist die eingetragene Adresse die Adresse der CSECT oder des ENTRYs mit dem Namen, der mit SYMBOL (bzw. SYMBOL@) festgelegt wurde.
Der Adressierungsmodus, der für den Aufruf der Ladeeinheit zu verwenden ist, wird vom DBL folgendermaßen angezeigt:
auf /390-Servern im höchstwertigen Bit des mit SYMBLAD festgelegten Feldes,
auf anderen BS2000-Servern im Feld AMODE@, falls angegeben.
In den folgenden Fällen wird das Laden abgebrochen:
SYMBLAD wurde nicht angegeben,
das Feld ist nicht auf Wortgrenze ausgerichtet,
der entsprechende Speicherbereich hat keinen Schreibzugriff oder ist nicht allokiert.
adrAdresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält. Angabe nur mit MF=M.
(r)r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
labelAdresse des Feldes. Sie kann als symbolische Adresse oder als Konstante (X'...') angegeben werden. Angabe nur mit MF=S oder MF=L.
SYMBOL@=
Gibt die Adresse eines Feldes an, das den Namen eines Objektes enthält. Der DBL benutzt diesen Namen, um das erste Modul in der Ladeeinheit zu bestimmen, das geladen werden soll. Der Name kann sich auf folgende Objekte beziehen:
Programmabschnitt (CSECT),
Einsprungstelle (ENTRY),
Bindemodul (OM) (Elementname),
Bindelademodul (LLM) (Elementname).
Der Typ des Objekts wird mit dem Operanden SYMTYP festgelegt.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
SYMBOL=
Angabe nur mit MF=S oder MF=L.
Gibt den Namen eines Programmabschnitts (CSECT), einer Einsprungstelle (ENTRY), eines Bindemoduls (OM) oder eines Bindelademoduls (LLM) an. Der DBL benutzt diesen Namen, um das erste Modul in der Ladeeinheit zu bestimmen, das geladen werden soll.
name
Explizite Angabe des Objektnamens. Der Name darf maximal 32 Zeichen lang sein.
Als letztes Zeichen des Names darf ein Stern (*) angegeben werden. Dieser repräsentiert eine beliebige Zeichenfolge. In diesem Fall werden aus der Hauptbibliothek (Operand LIBNAM/LIBNAM@/LIBLINK) alle Bibliothekselemente, deren Name dem angegebenen Muster entspricht, in eine List-Name-Unit geladen.
*ALL
Alle Bibliothekselemente der Hauptbibliothek (Operand LIBNAM/LIBNAM@/LIBLINK) werden in eine List-Name-Unit geladen.
SYMTYP=
Gibt den Typ des Objekts an, das mit dem Namen SYMBOL@ oder SYMBOL vereinbart wurde, und legt die Suchreihenfolge für das Objekt fest. Als Typ des Objekts kann ein Symbol (CSECT oder ENTRY) oder ein Modul (OM oder LLM) bestimmt werden.
Bei einem Symbol bezeichnet der Name SYMBOL@ oder SYMBOL einen Symbolnamen und kann sein:
der Name eines nicht maskierten CSECT- oder ENTRY-Eintrags in einer Programmbibliothek (Typ R oder Typ L),
der Name eines nicht maskierten CSECT- oder ENTRY-Eintrags in einer Bindemodulbibliothek (OML), oder in der EAM-Bindemoduldatei.
Bei einem Modul bezeichnet der Name SYMBOL@ oder SYMBOL einen Modulnamen und kann sein
der Name eines Bibliothekselements (Typ R oder Typ L) in einer Programmbibliothek,
der Name eines Bibliothekselement in einer Bindemodulbibliothek (OML).
ANYAlle Symboltabellen werden in die Suche einbezogen. Die Suchreihenfolge ist vom DBL wie folgt festgelegt:
LLMs mit dem Modulnamen SYMBOL@ oder SYMBOL
OMs mit dem Modulnamen SYMBOL@ oder SYMBOL
Symbole mit dem Symbolnamen SYMBOL@ oder SYMBOL in einem LLM. Zuerst werden CSECTs gesucht. Wird keine CSECT gefunden, werden ENTRYs gesucht.
Symbole mit dem Symbolnamen SYMBOL@ oder SYMBOL in einem OM. Zuerst werden CSECTs gesucht. Wird keine CSECT gefunden, werden ENTRYs gesucht.
CSECTNur Programmabschnitte (CSECTs) mit dem Symbolnamen SYMBOL@ oder SYMBOL werden gesucht.
ENTRYNur Einsprungstellen (ENTRYs) mit dem Symbolnamen SYMBOL@ oder SYMBOL werden gesucht.
CSENCSECTs und ENTRYs mit dem Symbolnamen SYMBOL@ oder SYMBOL werden gesucht. Zuerst werden CSECTs gesucht. Wird keine CSECT gefunden, werden ENTRYs gesucht.
MODULENur Module mit dem Modulnamen SYMBOL@ oder SYMBOL werden gesucht.
TSTOPT=
Gibt an, ob symbolische Adressen im Quellprogramm beim Testen mit AID verwendet werden dürfen. Mit symbolischen Adressen können nur Programme getestet werden, für die beim Übersetzen Test-und Diagnoseinformation (LSD) erzeugt wurde. Dazu müssen beim Übersetzen des Quellprogramms bestimmte Compileroptionen gesetzt werden (siehe Benutzerhandbücher der Sprachübersetzer).
Wird der Operand TSTOPT nicht angegeben, wird als Standardwert der eingestellte Wert aus dem Ladeaufruf START-EXECUTABLE-PROGRAM bzw. LOAD-EXECUTABLE-PRO-GRAM (oder START-PROGRAM bzw. LOAD-PROGRAM) übernommen.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt TSTOPT=NONE.
NONE
Test- und Diagnoseinformation (LSD) wird nicht berücksichtigt.
AID
Erlaubt die Verwendung von symbolischen Adressen des Quellprogramms beim Testen des Programms mit AID (siehe Handbuch „AID“ [3]). Diese Angabe ist nur zulässig, wenn gleichzeitig LDINFO=DEF oder LDINFO=REF angegeben wird.
UNIT@=
Gibt die Adresse eines Feldes an, das den Namen der Ladeeinheit enthält. Der Name kann in nachfolgenden Makroaufrufen UNBIND benutzt werden.
Fehlt der Operand, wird der mit SYMBOL@ oder SYMBOL vereinbarte Name übernommen.
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
UNIT=name
Angabe nur mit MF=S oder MF=L.
Explizite Angabe des Namens der Ladeeinheit. Der Name darf maximal 32 Zeichen lang sein.
UNRES=
Legt fest, wie nicht befriedigte Externverweise behandelt werden. Alle nicht befriedigten Externverweise werden in die Systemdatei SYSOUT ausgegeben, wobei externe Pseudoabschnitte (XDSECs-R) getrennt aufgelistet werden.
Fehlt der Operand UNRES, wird als Standardwert der eingestellte Wert aus dem Ladeaufruf START-EXECUTABLE-PROGRAM bzw. LOAD-EXECUTABLE-PROGRAM (oder START-PROGRAM bzw. LOAD-PROGRAM) übernommen.
*DBLOPT
Der Operandenwert wird aus dem letzten Aufruf des Kommandos MODIFY-DBL-DEFAULTS übernommen. Falls für den betreffenden Operanden mit MODIFY-DBL-DEFAULTS noch kein Wert festgelegt wurde, gilt der Wert, der in der Makro-Syntaxbeschreibung auf *DBLOPT folgt.
STD
Nicht befriedigte Externverweise (außer externe Pseudoabschnitte (XDSECs-R)) erhalten eine Adresse, die im Operanden ERREXIT angegeben ist.
DELAY
Nicht befriedigte Externverweise werden zu einem späteren Zeitpunkt befriedigt. Der Operand ist nur zulässig bei LDINFO=REF.
Der DBL speichert die nicht befriedigten Externverweise im Link-Kontext. Wird die nächste Ladeeinheit im Kontext geladen, versucht der DBL am Ende des Ladens, die gespeicherten Externverweise mit CSECTs und ENTRYs dieser Ladeeinheit zu befriedigen. Dieser Vorgang wiederholt sich beim Laden weiterer Ladeeinheiten, so lange der Kontext besteht.
Externe Pseudoabschnitte (XDSECs-R) können nicht gespeichert werden.
Beim Speichern im Kontext erhalten die nicht befriedigten Externverweise eine (vorläufige) Adresse, die im Operand ERREXIT angegeben ist.
DELAYWARN
Angabe nur zusammen mit INTVERS=SRVxxx, wobei xxx >= 004.
Das Verhalten ist wie bei UNRES=DELAY. Zusätzlich wird beim Auftreten nicht befriedigter Externverweise ein entsprechender Returncode zurückgeliefert.
Außerdem ist UNRES=DELAYWARN Voraussetzung für USRUNRI=DELAY.
ABORT
Nicht befriedigte Externverweise sind unzulässig. Das Laden der aktuellen Ladeeinheit wird abgebrochen.
USRMAP@=
Adresse eines benutzerdefinierten Datenbereichs, in den Informationen der DBL-Liste ausgegeben werden sollen, die mit dem Operanden USRMAPI festgelegt werden (nur zusammen mit INTVERS=SRVxxx und xxx >= 005). Der Datenbereich muss auf Wortgrenze ausgerichtet sein. Die Länge des Bereichs muss mit dem Operanden USRMAPL übergeben werden. Das Layout der Information erhalten Sie mit BIND MF=D,XPAND=USRMAP,INTVERS=SRV005
.
Die Angabe wird ignoriert, wenn USRMAPI=NONE.
adr
Adresse eines Hilfsfeldes, das die gesuchte Adresse des Datenbereichs enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Adresse des Datenbereichs. Angabe nur mit MF=M.
label
Symbolische Adresse des Datenbereichs. Angabe nur mit MF=S oder MF=L.
USRMAPI=
Bestimmt, welcher Teil der DBL-Liste in einen Datenbereich ausgegeben werden soll, dessen Adresse der Benutzer mit dem Operanden USRMAP@ übergibt (nur zusammen mit INTVERS=SRVxxx und xxx >= 005).
NONE
Die DBL-Liste wird nicht in einen benutzerdefinierten Datenbereich ausgegeben.
STD
Kopf der DBL-Liste und die Informationen über Ladeeinheit und Module werden in einen benutzerdefinierten Datenbereich ausgegeben, jedoch keine Informationen über CSECTs und ENTRYs.
ALL
Die gesamte DBL-Liste (wie auf SYSOUT) wird in einen benutzerdefinierten Datenbereich ausgegeben.
USRMAPL=integer 1..21474836479
Länge des benutzerdefinierten Datenbereichs, dessen Adresse mit dem Operanden USRMAP@ übergeben wird (nur zusammen mit INTVERS=SRVxxx und xxx >= 005). Die Länge ist in Byte anzugeben. Sie muss (für die Mindest-Information) wenigstens 248 Byte für INTVERS=SRV005 und 336 Byte für INTVERS=SRV006 betragen.
Die Angabe wird ignoriert, wenn USRMAPI=NONE.
USRUNR@=
Adresse eines benutzerdefinierten Datenbereichs, in den eine Liste der nicht befriedigt verbleibenden Externverweise ausgegeben werden soll (nur zusammen mit INTVERS=SRVxxx und xxx >= 005). Der Datenbereich muss auf Wortgrenze ausgerichtet sein. Die Länge des Bereichs muss mit dem Operanden USRUNRL übergeben werden.
Die ausgegebene Information besteht im Wesentlichen aus einem Listenkopf, der die Länge der ausgebenen Information und die Anzahl der nicht befriedigt verbleibenden Externverweise enthält, und einer Liste von Sätzen, die jeweils einen dieser Externverweise beschreiben.
Das Layout des Bereichs kann mit BIND MF=D,XPAND=USRUNR,INTVERS=SRVxxx
mit xxx >= 005 generiert werden. Das Layout ist versionsabhängig (Operand INTVERS
).
adr
Adresse eines Hilfsfeldes, das die gesuchte Adresse des Datenbereichs enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Adresse des Datenbereichs. Angabe nur mit MF=M.
label
Symbolische Adresse des Datenbereichs. Angabe nur mit MF=S oder MF=L.
USRUNRI=
Bestimmt, welche nicht befriedigt verbleibenden Externverweise in den Datenbereich ausgegeben werden soll, dessen Adresse der Benutzer mit dem Operanden USRUNR@ übergibt (nur zusammen mit INTVERS=SRVxxx und xxx >= 006).
Die Angabe wird ignoriert, wenn USRUNR@ nicht angegeben ist.
STD
Die nicht befriedigt verbleibenden Externverweise aus dem aktuellen Ladevorgang werden in den benutzerdefinierten Datenbereich ausgegeben.
DELAY
Die aus früheren Ladevorgängen (mit UNRES=DELAY) nicht befriedigt verbliebenen Externverweise werden in den benutzerdefinierten Datenbereich ausgegeben.
Bei USRUNRI=DELAY muss auch UNRES=DELAYWARN angegeben werden.
BOTH
Beide Arten von nicht befriedigten Externverweisen werden in den benutzerdefinierten Datenbereich ausgegeben.
Bei USRUNRI=BOTH muss auch UNRES=DELAYWARN angegeben werden.
USRUNRL=integer 1..21474836479
Länge des benutzerdefinierten Datenbereichs, dessen Adresse mit dem Operanden USRUNR@ übergeben wird (nur zusammen mit INTVERS=SRVxxx und xxx >= 005). Die Länge ist in Byte anzugeben. Sie muss (für den Ausgabekopf) wenigstens 16 Byte für INTVERS=SRV005 und 20 Byte für INTVERS=SRV006 betragen.
Die Angabe wird ignoriert, wenn USRUNR@ nicht angegeben ist.
VERS@=
Gibt die Adresse eines Feldes an, das die Elementversion des mit SYMBOL@ oder SYMBOL vereinbarten Elements enthält.
Für SYMTYP=ANY wird der Operand VERS@ nur berücksichtigt, wenn sich der Objektname (SYMBOL@ oder SYMBOL) auf ein Modul in einer Programmbibliothek (Typ R oder Typ L) bezieht. Bei Angabe eines CSECT- oder ENTRY-Namens wird der Operand VERS@ ignoriert. Fehlt der Operand, wird der Standardwert für die höchste Elementversion bei Programmbibliotheken übernommen (siehe Handbuch „LMS“ [29]).
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
VERS=versionAngabe nur mit MF=S oder MF=L
Explizite Angabe der Elementversion. Der Name darf maximal 24 Zeichen lang sein.
XPAND=
Angabe nur mit MF=D.
Bestimmt, das Layout des zu generierenden Datenbereichs.
PARAM
Generiert das Layout der Parameterliste für den Aufruf des BIND-Makros.
XRC
Generiert das Layout für den erweiterten Returncode.
USRMAP
Angabe nur zusammen mit INTVERS=SRVxxx und xxx >= 005.
Generiert das Layout für den Datenbereich, in den die DBL-Liste ausgegeben werden kann (siehe Operanden USRMAPI, USRMAP@ und USRMAPL).
USRUNR
Angabe nur zusammen mit INTVERS=SRVxxx und xxx >= 005.
Generiert das Layout für den Datenbereich, in den eine Liste der nicht befriedigten Externverweise ausgegeben werden kann (siehe Operanden USRUNR@, USRUNRI und USRUNRL).
XRC=
Bestimmt die Adresse eines Feldes, das den erweiterten Returncode enthält.
Die Adresse muss auf Wortgrenze ausgerichtet sein. Das Feld hat folgenden Aufbau:
Byte | Länge | Inhalt |
0- 6 | 7 | Meldungsschlüssel der letzten ausgegebenen Meldung während der Abarbeitung |
7 | 1 | Leerzeichen |
8-11 | 4 | DVS-Fehlerschlüssel |
12-23 | 12 | PLAM-Fehlerschlüssel |
24-27 | 4 | Fehlerschlüssel für sonstige Fehler beim Suchen in Bibliotheken |
28 | 1 | ILE-Flag und 7 reservierte Bits |
29-31 | 3 | reserviert |
32 | 4 | Adresse des ILE-Servermoduls |
adr
Adresse eines Hilfsfeldes, das die gesuchte Feldadresse enthält.Angabe nur mit MF=M.
(r)
r = Register mit der gesuchten Feldadresse. Angabe nur mit MF=M.
label
Symbolische Adresse des Feldes. Angabe nur mit MF=S oder MF=L.
XRCL=
Bestimmt die Länge des bei XRC angegebenen Feldes. In Abhängigkeit von dieser Länge übergibt DBL alle oder nur einen Teil der möglichen Informationen.
28
Das XRC-Feld ist 28 Byte lang. Informationen über ILEs werden nicht übergeben.
36
Das XRC-Feld ist 36 Byte lang. Alle Informationen einschließlich ILE-Informationen werden übergeben.
Hinweise zum Makroaufruf
Der DBL lädt Module oder Programmabschnitte (CSECTs), die bereits im selben Link-Kontext nachgeladen wurden, nicht noch einmal. Bei BRANCH=YES verzweigt der DBL an die Adresse des Symbols (CSECT oder ENTRY), das geladen wurde. Bei BRANCH=NO wird im aufrufenden Programm fortgesetzt.
CSECTs bzw. COMMON-Bereiche, deren Namen aus Leerzeichen bestehen, erhalten als Standardnamen „%CSECT“ bzw. „%COM“.
Kann ein LLM, der keine Relativierungsinformation enthält, nicht an eine passende Adresse geladen werden, tritt ein Fehler auf.
Beim Laden der Ladeeinheit versucht der DBL, nicht befriedigte Externverweise einer vorhergehenden Ladeeinheit, die im Link-Kontext gespeichert wurden (Operand UN-RES=DELAY) für die aktuelle Ladeeinheit zu befriedigen.
Als OPEN-Modus für die Programmbibliotheken und Elemente wird der Wert angenommen, der im Systemparameter BLSOPENX festgelegt ist
Die Operanden ALTLIB=YES und LIBNAM@/LIBNAM/LIBLINK dürfen zusammen angegeben werden. Ist jedoch die mit den Operanden LIBNAM@/LIBNAM/LIBLINK angegebene Hauptbibliothek nicht vorhanden, bricht der DBL die Verarbeitung ab. Die Angabe ALTLIB=YES dient nicht als Ersatz für die fehlende oder ungültige Hauptbibliothek.
Wenn die angegebene Programmversion noch nicht geladen ist, aber ein Programm mit diesem Namen im Link-Kontext (siehe Operand CONTEXT) bereits vorhanden ist, wird das Laden wegen Namenskonflikt abgewiesen.
Bei Angabe einer REP-Datei (REPFILE, REPFIL@) kann DBL auch eine zugehörige NOREF-Datei verarbeiten, wenn die Namenskonvention für BS2000-REP-Dateien eingehalten werden: Entweder enthält der NOREF-Datei-Name den Namensteil „SYSNRF“ (an Stelle von SYSREP) oder die NOREF-Datei hat den gleichen Namen wie die Hauptbibliothek mit dem Suffix „.NOREF“. NOREF-Dateien müssen in der Benutzerumgebung das gleiche Format wie in der Systemumgebung haben.
Bei Angabe von
BIND MF=D,XPAND=USRMAP
muss dasselbe Präfix angegeben werden wie beiBIND MF=D,XPAND=PARAM
.Wenn der benutzerdefinierte Ausgabebereich für die DBL-Liste (Operanden USRMAPI, USRMAP@ und USRMAPL) für die Aufnahme der vollständigen Information zu klein ist, wird ein Returncode (X’08010129’) in den Kopf der Liste eingetragen. Die Ausgabe wird abgebrochen, aber der Ladevorgang wird fortgesetzt.
Die Liste nicht befriedigt verbleibender Externverweise oder aus früheren Ladevorgängen (mit UNRES=DELAY) nicht befriedigt verbliebenen Externverweisen (sofern vorhanden) wird in den mit USRUNR@, USRUNRI und USRUNRL festgelegten Bereich ausgegeben. Diese Ausgabe erfolgt unabhängig vom Operanden UNRES. Wenn der
Bereich für die Aufnahme der vollständigen Information zu klein ist, wird ein Returncode (X’0801012D’) in den Kopf der Liste eingetragen. Die Ausgabe wird abgebrochen, aber der Ladevorgang wird fortgesetzt. Wenn alle Externverweise befriedigt wurden, wird in den Kopf der Liste als Anzahl 0 eingetragen.
Bei Angabe von
SYMBOL=*ALL
oderSYMBOL=name
, wobei das letzte Zeichen vonname
das Wildcard-Symbol „*“ ist, entsteht beim Laden eine so genannte List-Name-Unit. Nähere Informationen dazu finden Sie im Handbuch „BLSSERV“ [4].
Aufbau der Namensstruktur im Datenbereich des BIND-Makros
Die einzelnen Namen, die im Makroaufruf BIND definiert wurden, verwaltet der DBL mit Hilfe des Datenbereichs des BIND-Makros. Der Datenbereich enthält für jeden Namen einen Zeiger, der auf die Adresse des zugehörigen Namenfeldes verweist (siehe folgendes Bild). Außer dem Namen SYMBOL@ sind alle Namen wahlfrei. Wird ein Name im Makroaufruf nicht definiert, setzt der Makro den zugehörigen Zeiger auf den Adresswert X'FFFFFFFF'.
Ein Name kann auch explizit im Makroaufruf angegeben werden. In diesem Fall werden die Namen in den Datenbereich eingetragen.
Bild 23: Namensstruktur im Datenbereich des BIND-Makros
Suchstrategie
Der DBL sucht in verschiedenen „Behältern“ nach dem mit SYMBOL@ und SYMTYP vereinbarten Objekt. Wird ein passendes Objekt in einem Behälter gefunden, wird es in die Ladeeinheit eingefügt, die Ladeeinheit wird geladen und die Startadresse an den Benutzer im Feld SYMBLAD übergeben.
Der Suchvorgang verläuft in folgenden Stufen:
Suchen im Link-Kontext. Der Referenz-Kontext wird nicht durchsucht.
Suchen im Shared Code des Benutzers, der mit dem ASHARE-Makro des DBL in einen Common Memory Pool geladen wurde. Die Suche kann auf Memory Pools mit einem definierten Geltungsbereich eingeschränkt oder ganz unterdrückt werden (Operand SHARE-SCOPE).
Suchen im Shared Code im Systemadressraum, in den die nichtprivilegierten Subsysteme geladen sind (siehe Handbuch „Verwaltung von Subsystemen“ [12]). Das Durchsuchen der nichtprivilegierten Subsysteme kann der Benutzer im Ladeaufruf unterdrücken, wenn er für SHARE-SCOPE
!=
SYSTEM angibt.Durchsuchen von Bibliotheken, die der Benutzer im Ladeaufruf mit dem Operanden LIBNAM@ oder LIBNAM oder LIBLINK angegeben hat.
Durchsuchen von alternativen (System-)Bibliotheken, die mit dem Dateikettungsnamen BLSLIBnn (00<=nn<=99) oder $BLSLBnn zugewiesen wurden. Die Bibliotheken werden nach aufsteigenden Nummern „nn“ durchsucht. Zuerst werden die alternativen Systembibliotheken $BLSLB00..49 durchsucht, danach die alternativen Bibliotheken BLS-LIB00..99 und zuletzt die restlichen alternativen Systembibliotheken $BLSLB50..99.
Abhängig vom Operanden ALTLIB können auch die System- und/oder Benutzer-Tasklib durchsucht werden.
Das Suchen in alternativen Bibliotheken kann vom Benutzer im Ladeaufruf mit dem Operanden ALTLIB=NO unterdrückt werden.
Hinweis
Bei List-Name-Units findet keine Suche nach Namen im Link-Kontext oder Shared Code statt, da es sich bei den Namen um Elementnamen und nicht um Symbolnamen handelt.
Nähere Informationen dazu finden Sie im Handbuch „BLSSERV“ [4].
Rückinformation und Fehleranzeigen
Die Startadresse der Ladeeinheit wird in dem Feld übergeben, das mit dem Operanden SYMBLAD festgelegt wurde. Das höchstwertige Bit der übergebenen Startadresse zeigt an, welcher Adressierungsmodus eingestellt werden muss
(Bit = 1 für 31-Bit-Adressierung, Bit = 0 für 24-Bit-Adressierung).
Standardheader:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
Über die Ausführung des Makros BIND 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' | Unzulässige Kombination von Parametern in der Parameterliste.
|
X'0C' | X'01' | X'0104' | Der Aufruf ist ungültig, da er unter einer Benutzerkennung gegeben wurde, |
X'0C' | X'40' | X'0114' | LNKCTXS=OLD wurde gegeben und der angegebene Kontext ist nicht |
X'0C' | X'40' | X'0118' | LNKCTXS=NEW wurde gegeben und der angegebene Kontext ist |
X'0C' | X'40' | X'011C' | Ein Kontext, der mit REFCTX@ angegeben wurde, ist nicht vorhanden. |
X'0C' | X'01' | X'0120' |
|
X'0C' | X'01' | X'0121' | Ungültige Parameterliste: Einer der Eingabeparameter ist falsch |
X'0C' | X'01' | X'0124' | Ein Bereich, der einen Namen enthalten soll, ist nicht zugewiesen.
|
X'0C' | X'01' | X'0125' | Die Anzahl der Referenz-Kontext-Namen ist zu groß. Maximal 200 |
X'0C' | X'01' | X'0127' | Der obligatorische Operand SYMBLAD wurde nicht angegeben. |
X'08' | X'01' | X'0129' | Die mit USRMAPL angegebene Länge ist zu klein. Die Ausgabe der |
X'0C' | X'01' | X'012A' | Die mit USRMAPL angegebene Länge ist zu klein. |
X'08' | X'01' | X'012D' | Die mit USRUNRL angegebene Länge ist zu klein. Die Ausgabe der Liste |
X'0C' | X'01' | X'012E' | Die mit USRUNRL angegebene Länge ist zu klein. |
X'0C' | X'01' | X'0134' | Unzulässiger Operand LNKCTXS. |
X'0C' | X'01' | X'0144' | Ungültiger Name für einen Link-Kontext. |
X'0C' | X'01' | X'0146' | Ein Referenz-Kontext hat den gleichen Namen wie der Link-Kontext. |
X'0C' | X'01' | X'0148' | Ein Link- oder Referenz-Kontext kann nicht benutzt werden. |
X'0C' | X'01' | X'014C' | Ein ungültiger Symbolname aus Leerzeichen wurde angegeben. |
X'0C' | X'01' | X'014D' | Es wurde kein Symbolname angegeben. |
X'0C' | X'01' | X'0150' | Unzulässige Angaben im Operanden SYMTYP. |
X'0C' | X'20' | X'0158' | Maximale Anzahl von 16 Benutzerkontexten ist erreicht. Ein neuer |
X'0C' | X'40' | X'016C' | Interner Fehler der AID-Testroutine (Systemfehler). |
X'0C' | X'40' | X'0184' | Ungültige Kurzkennung bei MPID weil:
|
X'0C' | X'01' | X'0188' | Ungültige Ladeadresse bei LOAD@. |
X'0C' | X'40' | X'018C' | Es wurde versucht, einen Kontext zu benutzen, der durch einen |
X'0C' | X'40' | X'0190' | Ein unzulässiger Residenz-Modus (RMODE) wurde für die Ladeeinheit Mögliche Ursache beim Laden eines Moduls: Mögliche Ursachen beim Laden eines COMMON-Bereiches:
|
X'0C' | X'01' | X'0194' | Ein Klasse-6-Speicherbereich, den der DBL angefordert hat, wurde vom |
X'0C' | X'20' | X'0196' | Verbindungsfehler bei einem Common Memory Pool. Die Task kann |
X'0C' | X'20' | X'0198' | Für das Laden der vom Benutzer angegebenen Objekte steht nicht |
X'0C' | X'20' | X'01A0' | Auf ein Betriebsmittel kann nicht zugegriffen werden. Es ist gesperrt. |
X'0C' | X'40' | X'0200' | Fehler während DBL-Ablauf (Systemfehler). |
X'0C' | X'40' | X'0204' | Inkonsistenzen in den Memory Management Tabellen der DBL |
X'0C' | X'40' | X'0208' | Inkonsistenzen in den Data Management Tabellen der DBL (Systemfehler). |
X'0C' | X'40' | X'020C' | Inkonsistenzen in den symb. Informationstabellen (Systemfehler). |
X'0C' | X'20' | X'0300' | Fehler bei $REQM, $RELM, $CSTAT, RDTFT (Systemfehler). |
X'0C' | X'40' | X'0400' | Fehlerhafte Objektsätze bei der Verarbeitung eines Moduls (OM oder |
X'0C' | X'40' | X'0404' | Ungültiger Typcode im ESD/ESV-Satz. |
X'0C' | X'40' | X'0408' | Inkonsistenzen im Eingabemodul (z.B. Reihenfolge der ESD/ESV-Sätze). |
X'0C' | X'40' | X'040C' | Das angegebene Modul ist nicht in der aktuellen Ladeeinheit. Fehler im |
X'0C' | X'40' | X'0410' | Fehler im TXT-Satz. |
X'0C' | X'40' | X'0414' | Fehler bei der Verarbeitung von symbolischen Informationen. |
X'04' | X'40' | X'0418' | Fehlerhafter REP-Satz. Die Verarbeitung wird fortgesetzt (auf die |
X'08' | X'40' | X'0418' | Fehlerhafter REP-Satz. |
X'0C' | X'40' | X'0418' | Fehlerhafter REP-Satz. Die Verarbeitung wurde abgebrochen (auf die |
X'04' | X'40' | X'041C' | Das angegebene Modul ist nicht in der aktuellen Ladeeinheit. Der REP- |
X'0C' | X'40' | X'041C' | Das angegebene Modul ist nicht in der aktuellen Ladeeinheit. Der REP- (Die Meldung BLS0234 wurde mit NO beantwortet.) |
X'04' | X'40' | X'0420' | Fehler in der INCLUDE-Anweisung. Die Verarbeitung wird fortgesetzt |
X'0C' | X'40' | X'0420' | Fehler in der INCLUDE-Anweisung. Die Verarbeitung wurde abgebrochen. |
X'0C' | X'40' | X'0430' | Das LLM kann nicht geladen werden. Mögliche Gründe:
|
X'0C' | X'40' | X'0432' | Eine Adresse, die aus einer Relativierung hervorgeht, wurde |
X'0C' | X'40' | X'0433' | Eine Adresse, die aus einem Befehl resultiert, liegt außerhalb des |
X'0C' | X'40' | X'0434' | Dieses LLM ist nicht mit der „PRE-LOADING“-Option vereinbar und |
X'0C' | X'40' | X'0435' | An DSSM übergebene Länge des vorladbaren Teils stimmt nicht mit der |
X'04' | X'01' | X'0600' | Das in einer INCLUDE-Anweisung angegebene Modul kann nicht gefunden |
X'0C' | X'01' | X'0600' | Das in einer INCLUDE-Anweisung angegebene Modul kann nicht gefunden |
X'04' | X'01' | X'0604' | Ein Namenskonflikt ist aufgetreten und wurde akzeptiert. |
X'0C' | X'01' | X'0604' | Ein Namenskonflikt ist aufgetreten. Die Verarbeitung wurde abgebrochen. |
X'04' | X'01' | X'0608' | Externverweise können nicht befriedigt werden. |
X'08' | X'01' | X'0608' | Nicht befredigte Externverweise verbleiben im Kontext und werden nach |
X'0C' | X'01' | X'0608' | Externverweise können nicht befriedigt werden. |
X'04' | X'01' | X'0609' | XDSECs-R können nicht befriedigt werden. |
X'0C' | X'01' | X'0609' | XDSECs-R können nicht befriedigt werden. |
X'04' | X'40' | X'060C' | Es wurde LOAD=NO angegeben, aber das Modul ist nicht geladen. |
X'0C' | X'40' | X'060D' | Das Symbol ist im LNKCTX bereits geladen. Es wird nicht noch einmal |
X'0C' | X'01' | X'0610' | Die angegebene Datei ist keine Programmbibliothek oder Bindemodulbibliothek |
X'0C' | X'01' | X'0614' | Die angegebene Datei ist keine gültige Bindemodulbibliothek (OML). |
X'0C' | X'01' | X'0618' | Die Bibliotheksroutine PLAM ist nicht verfügbar |
X'0C' | X'01' | X'061C' | PAM-Lesefehler in der Bibliothek. |
X'0C' | X'01' | X'0620' | Fehler im OML-Directory. |
X'0C' | X'40' | X'0624' | Die Ladeeinheit enthält eine CSECT mit AMODE 31 und:
|
X'04' | X'40' | X'0628' | Der aktuelle Adressierungsmodus entspricht nicht dem Adressierungsmodus, |
X'0C' | X'40' | X'062C' | Es wurde versucht, ein Modul mit RMODE=24 in einen Memory Pool |
X'0C' | X'01' | X'0630' | Ein LLM mit Slices, die ober- und unterhalb 16 MByte geladen werden, |
X'0C' | X'01' | X'0634' | Ein LLM mit Slices, die vom Benutzer definiert wurden, kann nicht in |
X'0C' | X'01' | X'0636' | Die HSI-Codes von ILE und Servermodul sind inkompatibel. |
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.
Beispiel
Während des Programmlaufs von BIND1 wird mit dem Makro BIND ein zweiter Programmabschnitt BIND2 nachgeladen. BIND2 steht als LLM in der Bibliothek MACEXMP.LIB. Beide Programmabschnitte sollen im 31-Bit-Adressierungsmodus ablaufen. BIND1 soll unterhalb und BIND2 oberhalb der 16MB-Grenze geladen werden. Nach Aufruf des Makros BIND soll zuerst BIND2 ablaufen.
Programm BIND1
BIND1 START PRINT NOGEN BIND1 AMODE 31 -------------------------------------------------------(1) BIND1 RMODE 24 BALR 3,0 USING *,3 USING BINDSECT,6 -----------------------------------------------(2) ST 3,AREA11 UNPK AREAH,AREA1 MVC AREAA(8),AREAH WROUT1 WROUT OUT,ERROR,PARMOD=31 --------------------------------------(3) BACK LA 12,MVC BIND BIND MF=E,PARAM=BINDPAR ---------------------------------------(4) LA 6,BINDPAR CLC XBINRET,=X'00000000' -------------------------------------(5) BE MVC MVC OUT+5(26),='BIND error! ' WROUT OUT,ERROR,PARMOD=31 B ERROR MVC MVC OUT+5(26),='Back in BIND1 ' WROUT OUT,ERROR,PARMOD=31 --------------------------------------(6) ERROR TERM OUT DC Y(OUTE-OUT) DS CL3 DC C'BIND1: BASEREG.= ' AREAA DS CL8 OUTE EQU * AREA DS 0F AREA1 DS 0CL5 AREA11 DS CL4 AREA12 DC C'0' DS 0F AREAH DS CL9 BINDPAR BIND MF=L,SYMBOL=BIND2,SYMBLAD=BIND2@,BRANCH=YES,PROGMOD=ANY,* LIBLINK=PLAMLIB,MAP=SYSOUT BIND2@ DS A BINDSECT BIND MF=D,PREFIX=X --------------------------------------------(7) END
Programm BIND2
BIND2 CSECT ----------------------------------------------------------(8) PRINT NOGEN BIND2 AMODE ANY ------------------------------------------------------(9) BIND2 RMODE ANY BALR 4,0 USING *,4 ST 4,AREA11 UNPK AREAH,AREA1 MVC AREAA(8),AREAH WROUT OUT,ERROR,PARMOD=31 -------------------------------------(10) BR 12 ERROR TERM OUT DC Y(OUTE-OUT) DS CL3 DC C'BIND2: BASEREG.= ' AREAA DS CL8 OUTE EQU * AREA DS 0F AREA1 DS 0CL5 AREA11 DS CL4 AREA12 DC C'0' AREAH DS CL9 END
(1) | Für Programmabschnitt BIND1 wird das Attribut AMODE=31 vereinbart. Mit RMO-DE=24 wird BIND1 immer unterhalb der 16MB-Grenze geladen. |
(2) | Register R6 wird dem Assembler als Basisadressregister zur Adressierung der DSECT für den Datenbereich des BIND-Makros zugewiesen, die an der symbolischen Adresse BINDSECT durch einen BIND-Aufruf mit MF=D erzeugt wird. |
(3) | Der Inhalt des Basisregisters von BIND1 wird zur Darstellung des Adressierungsmodus und der Ladeadresse ausgegeben. |
(4) | An der symbolischen Adresse BIND wird der Makro BIND in seiner E-Form aufgerufen. An dieser Stelle im Programm wird daher nur der Befehlsteil erzeugt. Der zughörige Datenbereich wird an der symbolischen Adresse BINDPAR durch einen BIND-Aufruf mit MF=L angelegt. Die dort angegebenen Operandenwerte veranlassen den BIND-Makro, bei der Programmausführung
|
ein DBL-Protokoll nach SYSOUT auszugeben (MAP=SYSOUT) und
nach dem Laden von BIND2 den Programmlauf in BIND2 fortzusetzen (BRANCH=YES).
(5) | Nach der Ausführung des BIND-Makros wird geprüft, ob das Feld XBINRET des Standardheaders den Returncode X'00000000' enthält, der eine fehlerfreie Makroausführung anzeigt. Der Name XBINRET stammt aus der DSECT, die unter der symbolischen Adresse BINDSECT durch einen BIND-Aufruf mit MF=D und PRE-FIX=X erzeugt wurde (siehe (7)). Diese DSECT beschreibt den Aufbau des Datenbereichs des BIND-Makros. Die symbolischen Namen der DSECT können zur Adressierung innerhalb des Datenbereichs verwendet werden, nachdem das zugeordnete Basisadressregister (hier Register R6) mit der Anfangsadresse des Datenbereichs (hier BINDPAR) geladen worden ist. |
(6) | Eine Meldung nach SYSOUT informiert darüber, dass nach dem Ablauf von BIND2 die Programmausführung in BIND1 fortgesetzt wird. |
(7) | Der Makroaufruf BIND mit MF=D erzeugt eine DSECT, die den Aufbau des Datenbereichs des BIND-Makros beschreibt. Der Operand PREFIX=X bewirkt, dass alle symbolischen Namen in dieser DSECT (Feldnamen und Equates) mit dem Buchstaben X beginnen. |
(8) | Die CSECT-Anweisung definiert den Programmabschnitt BIND2. |
(9) | AMODE=ANY zeigt dem Betriebssystem an, dass BIND2 sowohl im 24-Bit- als auch im 31-Bit-Adressierungsmodus ablaufen kann. |
(10) | Der Inhalt des Basisregisters von BIND2 wird zur Darstellung des Adressierungsmodus und der Ladeadresse ausgegeben. |
Ablaufprotokoll
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,bind1), - -----------------(11) // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,bind1)) % ASS6011 ASSEMBLY TIME: 557 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 84 MSEC //compile source=*library-element(macexmp.lib,bind2), - -----------------(12) // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,bind2)) % ASS6011 ASSEMBLY TIME: 270 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
% ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 82 MSEC //end % ASS6012 END OF ASSEMBH /add-file-link link-name=plamlib,file-name=macexmp.lib ------------------(13) /start-executable-program library=macexmp.lib, - ------------------------(14) / element-or-symbol=bind1,prog-mode=*any % BLS0523 ELEMENT 'BIND1', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'BIND1', VERSION ' ' OF '<date> <time>' LOADED BIND1: BASEREG.= 80000002 -----------------------------------------------(15) -------------------------------------------------------------------------(16) ############################### A D B L M A P ############################# # # # LOAD UNIT: BIND2. . . . . . . . . . . . . LOAD INFO =DEF # # VERSION : ~ LOAD TIME =<date> <time> # # CONTEXT : LOCAL#DEFAULT. . . . . . . . . TEST OPTION=NONE # # # # LLM : BIND2. . . . . . . . . . . . . BY_ATTR / EXPLICIT PLAMLIB # # OM : BIND2. . . . . . . . . . . . . STANDARD # # CSECT : BIND2. . . . . . . . . . . . . @= 1000000 L= 7E # # # # LOAD UNIT STARTING POINT. . . . . . . . . @= 1000000 AMODE=31 HSI=/7500 # # # ######################## E N D O F A D B L M A P ###################### BIND2: BASEREG.= 81000002 -----------------------------------------------(17) Back in BIND1 -----------------------------------------------------------(18)
(11) | Das Programm BIND1 wird übersetzt. |
(12) | Das Programm BIND2 wird übersetzt. |
(13) | Der im BIND-Aufruf (4) verwendete Dateikettungsname wird zugewiesen. |
(14) | Der DBL wird aufgerufen, um das Programm zu binden, zu laden und zu starten. |
(15) | Der Inhalt des Basisregisters von BIND1 wird ausgegeben. 31-Bit-Adressierung ist eingestellt (Bit 231 = 1); die Ladeadresse liegt unterhalb der 16Mbyte-Grenze. |
(16) | Der DBL hat die CSECT BIND2 nachgeladen. Er gibt ein Protokoll nach SYSOUT aus. |
(17) | Der Inhalt des Basisregisters von BIND2 wird ausgegeben. 31-Bit-Adressierung ist eingestellt (Bit 231 = 1); die Ladeadresse liegt oberhalb der 16Mbyte-Grenze. |
(18) | Nach der Rückkehr aus BIND2 wird der Programmlauf in BIND1 fortgesetzt. |