Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

ALESRV - Task mit Datenraum verbinden oder lösen

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Erweiterung durch Datenräume; siehe "Erweiterung durch Datenräume"

Makrotyp:

S-Typ, MF-Format 3: C-/D-/L-/M-/R-/E-Form;
siehe "S-Typ-Makroaufrufe"

Der Makro ALESRV kann auf allen BS2000-Servern verwendet werden (siehe Abschnitt „Erweiterung durch Datenräume“).

Makrobeschreibung

Der Makro ALESRV realisiert den Anschluss eines im AR-Modus laufenden Programms an einen mit dem Makro DSPSRV eingerichteten Datenraum. Das System stellt die Verbindung zu dem spezifizierten Datenraum her, indem es einen freien Eintrag (ALE) in der taskeigenen Zugriffsliste sucht, ihn belegt und den ALET zur Adressierung zurückliefert. Das System überprüft beim Anlegen eines ALE die Zugriffsberechtigung des Programms für diesen Datenraum. Hat das Programm einmal einen gültigen ALET in das Zugriffsregister geladen, erfolgt beim Zugriff keine Kontrolle mehr.

Mit dem Makro ALESRV kann ein Datenraum auch wieder freigegeben werden. Den Eintrag (ALE), der die Verbindung zwischen Programm und Datenraum realisiert, markiert das System in der taskeigenen Zugriffsliste als ungültig. Ein solcher markierter Eintrag steht für einen erneuten Anschluss (mit FCT=CONNECT) zur Verfügung. Wird bei der Adressumsetzung auf einen als ungültig markierten Eintrag zugegriffen, kommt es zu einer Unterbrechung (siehe Makro STXIT).

Mit dem Makro ALESRV kann sich der Anwender durch Angabe des ALET die zum Datenraum gehörende, sessionweit eindeutige Identifikation (SPID) ausgeben lassen.

Die Funktionen des ALESRV-Makros ermöglichen:

  • eine Verbindung zwischen Programm und Datenraum herzustellen (FCT=CONNECT),

  • diese Verbindung wieder zu lösen (FCT=DISCONN) und

  • sich die SPID eines Datenraums ausgeben zu lassen (FCT=IDENTIFY).

Makroaufrufformat und Operandenbeschreibung

ALESRV

FCT=CONNECT,SPID=spid_adr / DISCONN,ALET=alet_adr / IDENTIFY,ALET=alet_adr

,MF=C / D / L / M / R / E

[,PARAM=adr / (r)]

,PREFIX=N / p

,MACID=VDA / macid

FCT=
bestimmt die auszuführende Funktion des Makros ALESRV.

CONNECT
realisiert die Verbindung eines im AR-Modus laufenden Programms mit einem bestehenden Datenraum. Dabei wird ein freier Eintrag (ALE) in der Zugriffsliste belegt und der ALET ausgegeben.
Der Operand SPID muss angegeben werden.

DISCONN
löst die Verbindung des im AR-Modus laufenden Programms mit dem Datenraum. Dabei wird ein belegter Eintrag (ALE) in der Zugriffsliste freigegeben, d.h. als ungültig markiert.
Der Operand ALET muss angegeben werden.

IDENTIFY
identifiziert einen Datenraum anhand des Zeigers (ALET) auf einen Eintrag (ALE) in der Zugriffsliste. Es wird die SPID des Datenraums ausgegeben.
Der Operand ALET muss angegeben werden.

ALET=
ist der Inhalt eines Zugriffsregisters und Zeiger auf einen Eintrag in der Zugriffsliste. Dieser Eintrag verbindet das Programm mit dem Datenraum.
Dieser Operand kann sowohl Ein- als auch Ausgabeoperand sein.

alet_adr
symbolische Adresse (Name) eines Feldes (4 Byte), das den ALET eines bestimmten Datenraums enthält.

SPID=
kennzeichnet einen Datenraum eindeutig im Gesamtsystem.
Sie wird beim Anlegen eines Datenraumes vom System vergeben.
Der Operand kann sowohl Ein- als auch Ausgabeoperand sein.

spid_adr
symbolische Adresse (Name) eines Feldes (8 Byte), das die SPID des Datenraumes enthält.

MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. PREFIX, MACID und PARAM) 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, R-Form oder M-Form des Makroaufrufs kann ein Präfix PREFIX und bei der C-Form, R-Form oder M-Form zusätzlich eine Macid MACID angegeben werden (siehe siehe Abschnitt „S-Typ-Makroaufrufe“).

Hinweise zum Makroaufruf

  • Der Operand ALET kann sowohl Ein- als auch Ausgabeoperand sein, d.h. dass er durch FCT=CONNECT in dem erzeugten Datenbereich als Ausgabeoperand vorliegt und bei nochmaliger Verwendung dieses Datenbereichs auch als Eingabeoperand gültig ist.

  • Mehrfache Verbindungen zu ein und demselben Datenraum werden durch verschiedene ALETs realisiert. Jeder dieser ALETs muss durch einen entsprechenden FCT=DIS-CONNECT-Aufruf gelöscht werden, da das System bei der Freigabe eines Datenraums nicht auch automatisch alle korrespondierenden ALETs löscht.

  • Die ALET-Wert-Vergabe erfolgt deterministisch, d.h. ist bei zwei Programmen innerhalb eines BS2000-Systemlaufs die Abfolge der erfolgreichen ALESRV-Aufrufe mit FCT=CONNECT und FCT=DISCONN identisch und jeweils gleich parametrisiert (bei CONNECT heißt dies: jeweils SPID desselben Data Space angegeben; bei DISCONN: jeweils gleicher ALET), so erhalten beide Programme denselben ALET-Output-Wert beim n-ten ALESRV-CONNECT.
    Damit ist folgendes gemeint:
    Verhalten sich zwei TU-Programme bzgl. Konnektierung an Data Spaces gleich, so bekommen sie auch dieselben ALETs zugeteilt.

  • Die Freigabe eines Datenraums erfolgt mit dem Makro DSPSRV FCT=DESTROY oder bei Beendigung des Programms, das den Datenraum erzeugt hat.

Rückinformation und Fehleranzeigen

Standardheader:

+---------------+
|   |   |   |   |
|c|c|b|b|a|a|a|a|
+---------------+

Über die Ausführung des Makros ALESRV 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'

Funktion erfolgreich ausgeführt.
Mit MF=R kann aus dem Datenbereich folgender Wert gelesen werden:

  • bei FCT=CONNECT: alet

  • bei FCT=IDENTIFY: spid

X'02'

X'00'

X'0001'

Warnung: Der Eintrag in der Zugriffsliste wurde gelöscht, aber der dazugehörende Datenraum war bereits freigegeben (bei FCT=DISCONN).

X'00'

X'01'

X'0003'

Fehler im Datenbereich.

X'01'

X'01'

X'0004'

Es fehlt der Operand SPID (bei FCT=CONNECT).

X'02'

X'01'

X'0004'

Es fehlt der Operand ALET (bei FCT=DISCONN oder FCT=IDENTIFY).


X'20'

X'0005'

Interner Fehler.

X'00'

X'40'

X'0304'

Die Angabe des SPID-Operanden ist fehlerhaft:
Der angegebene Datenraum existiert nicht oder der Aufrufer hat keine Berechtigung, auf diesen Datenraum zuzugreifen (bei FCT=CONNECT).

X'01'

X'40'

X'0304'

Die Angabe des SPID-Operanden ist fehlerhaft:
Der angegebene Datenraum gehört zu einer anderen TU-Domain (bei FCT=CONNECT).

X'00'

X'40'

X'0404'

Die Angabe des ALET-Operanden ist fehlerhaft:
Der angegebene ALET ist ungültig oder privilegiert (bei FCT=DISCONN oder FCT=IDENTIFY).

X'01'

X'40'

X'0404'

Die Angabe des ALET-Operanden ist fehlerhaft:
Der angegebene ALET verweist auf einen Datenraum in einer anderen TU-Domain (bei FCT=DISCONN oder FCT=IDENTIFY).

X'00'

X'40'

X'0406'

Die Zugriffsliste ist voll belegt, d.h. es sind keine freien Einträge vorhanden, um eine neue Verbindung Programm zu Datenraum zu schaffen (bei FCT=CONNECT).

X'00'

X'40'

X'0604'

Der ALET verweist auf einen bereits gelöschten Datenraum (bei FCT=IDENTIFY).

Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.

Beispiel siehe im Abschnitt „Erweiterung durch Datenräume“.