Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

ERASE-Exits (060/061)

&pagelevel(3)&pagelevel

Bei der ERASE-Verarbeitung sind zwei Exit-Punkte vorgesehen, ein Request- und ein Return Exit. Sie klammern je einen Auftrag.

Ein Auftrag ist zum einen immer eines der Kommandos DELETE-FILE, DELETE-FILE-GROUP, DELETE-FILE-GENERATION, DELETE-SYSTEM-FILE, EXPORT-FILE bzw. der ERASE-Makroaufruf, zum anderen aber auch jeder Katalogeintrag, der von der ERASE-Funktion bearbeitet wird.

Eine Sonderstellung haben die Dateigenerationsgruppen: hier bilden nicht die Katalogeinträge der Generationen separate Aufträge, sondern die Dateigenerationsgruppe als Ganzes gilt als ein Auftrag.

  • Am Request Exit kann die Exit-Routine den Auftrag prüfen und ggf. abweisen. Wenn der Return Exit eine AUDIT-Überwachung durchführen soll, muss der AUDIT-Indikator aus dem Katalogeintrag gesichert werden.

  • Der Return Exit wird nach Abarbeitung eines Auftrags angesprungen. Die Exit-Routine kann den DMS-Fehlercode prüfen und ggf. Überwachungsmaßnahmen einleiten.

Im Register 1 enthalten beide Exits einen Zeiger auf eine Struktur, die vom Makro EX060 beschrieben wird und im Arbeitsbereich des aufrufenden Systemmoduls angelegt ist.

Will die Systembetreuung in der Exit-Routine Überwachungsmaßnahmen ergreifen, die vom AUDIT-Wert im Katalogeintrag abhängen, so muss diese Information bereits am Request Exit sichergestellt werden, da nach erfolgreichem Löschen (am Return Exit) der Katalogeintrag im Regelfall nicht mehr zur Verfügung steht.

Das Feld für den Dateinamen ist 80 Bytes lang. Es sollte in der Exit-Routine gelöscht werden, bevor es versorgt wird, da es sonst Schmierzeichen enthalten kann. Wird das Feld nicht gelöscht, muss das Endekriterium für den Dateinamen abgefragt werden (X'40').

Return Exit (060)

Folgende Informationen werden an die Exit-Routine übergeben:

R1 = A(EX060-Parameterbereich)
R12 = A(TPR Program Manager)
R13 = A(Sicherungsbereich der rufenden Komponente)
R14 = A(indirekter Rücksprung)
R15 = A(Exit-Routine) 

Der Return Exit soll den Erfolg eines Löschauftrages anzeigen. Er wird nicht aufgerufen, wenn die Request-Exit-Routine den ERASE abgewiesen hat.

Bei jedem Aufruf enthält das Feld &p.RET des ERASE-Parameterbereichs den
Returncode, der beim Löschen bzw. Löschversuch aufgetreten ist; falls kein Fehler aufgetreten ist, steht dort der Wert X'00000000'. Der ERASE-Parameterbereich wird durch das Feld
MAXEPL adressiert. Das Feld MAXFLC enthält den Wert, den das entsprechende MAXFLC-Feld des Request Exits enthielt. Ist MAXFLC Null, so handelt es sich um den Return Exit eines Kommandos bzw. Makros und &p.RET enthält den Sammelfehlercode.

Die Exit-Routine kann keine Rückkehrinformation an den Systemmodul senden. Nach der Rückkehr aus der Return-Exit-Routine erfolgt die Rückkehr aus der ERASE-Verarbeitung. Der Maincode im Standard-Header des Parameterbereichs muss von der Exit-Routine mit X'0000' oder X'0004' versorgt werden. Enthält der Maincode andere Werte, wird auf dem Bedienungsplatz folgende Meldung ausgegeben:

DMS06B9 DIE AN DEN SYSTEM-EXIT (&00) ANGESCHLOSSENE EXIT-ROUTINE LIEFERTE DEN

FEHLERCODE (&01)

Request Exit (061)

Registerversorgung wie Return Exit.

Der Request Exit wird genau einmal pro ERASE-Auftrag angesprungen. Der Exit-Parameterblock EX060 wird vorher wie folgt versorgt:
MAXEPL zeigt auf den ERASE-Parameterbereich (s.o.), MAXFLC enthält einen Zähler, der beim Kommando- bzw. Makro-Request mit Null initialisiert und bei jedem Auftrag um eins erhöht wird.

Die Rückinformation an den rufenden Systemmodul erfolgt im Maincode des Standardheaders des Exit-Parameterbereichs. Es sind folgende Werte möglich:

X'0000'

Die ERASE-Verarbeitung wird mit dem eventuell von der Exit-Routine
modifizierten ERASE-Parameterbereich ausgeführt.

X'0004'

Die ERASE-Anforderung wird mit Fehlercode X'0514' abgewiesen.
Für Kommandos erfolgt auf SYSOUT die Meldung:

DMS0514 BENUTZUNG DES ANGEGEBENEN KOMMANDOS ODER 'ERASE' MAKROS 
WURDE VOM SYSTEMVERWALTER EINGESCHRAENKT. KOMMANDO ODER MAKRO 
ABGEWIESEN.

sonstige

Wie für X'0004'; zusätzlich wird folgende Meldung auf dem
Bedienungsplatz ausgegeben:

DMS06B9 DIE AN DEN SYSTEM-EXIT (&00) ANGESCHLOSSENE EXIT-ROUTINE 
LIEFERTE DEN FEHLERCODE (&01) 

Hinweis

Register 12, 13 und 14 dürfen von der Exit-Routine nicht zerstört werden.

 

DSECT

         EX060 MF=D
         MFTST MF=D,PREFIX=D,MACID=MAX,ALIGN=F,                        C
               DMACID=MAX,SUPPORT=(D,C,L),DNAME=MAXMDL
DMAXMDL  DSECT ,
               *,##### PREFIX=D, MACID=MAX #####
*   Parameterarea
DMAXHDR  FHDR  MF=(C,DMAX),EQUATES=NO                   Standard-Header
DMAXHDR  DS    0A
DMAXFHE  DS    0XL8            0   GENERAL PARAMETER AREA HEADER
*
DMAXIFID DS    0A              0   INTERFACE IDENTIFIER
DMAXFCTU DS    AL2             0   FUNCTION UNIT NUMBER
*                                  BIT 15    HEADER FLAG BIT,
*                                  MUST BE RESET UNTIL FURTHER NOTICE
*                                  BIT 14-12 UNUSED, MUST BE RESET
*                                  BIT 11-0  REAL FUNCTION UNIT NUMBER
DMAXFCT  DS    AL1             2   FUNCTION NUMBER
DMAXFCTV DS    AL1             3   FUNCTION INTERFACE VERSION NUMBER
*
DMAXRET  DS    0A              4   GENERAL RETURN CODE
DMAXSRET DS    0AL2            4   SUB RETURN CODE
DMAXSR2  DS    AL1             4   SUB RETURN CODE 2
DMAXSR1  DS    AL1             5   SUB RETURN CODE 1
DMAXMRET DS    0AL2            6   MAIN RETURN CODE
DMAXMR2  DS    AL1             6   MAIN RETURN CODE 2
DMAXMR1  DS    AL1             7   MAIN RETURN CODE 1
DMAXFHL  EQU   8               8   GENERAL OPERAND LIST HEADER LENGTH
*
DMAXFLC  DS    F                         File Counter
DMAXEPL  DS    A                         Addr der ERASE-PL
DMAX#    EQU   *-DMAXHDR

Das Feld MAXEPL enthält einen Zeiger auf einen Parameterbereich der Version 3. Wurde ein ERASE der Version 3 verlangt, so ist dies die Kopie des Original-Parameterbereichs. Wurde ein ERASE der Version 0, 1 oder 2 verlangt, so wird das alte Format in das neue umgewandelt. Ein Zugriff auf den Original-Parameterbereich ist nicht möglich.

ERASE-Parameterbereich

Die DSECT für den ERASE-Parameterbereich kann erzeugt werden mit
[name] ERASE MF=D[,PREFIX=prefix/*],VERSION=3

Der ERASE-Parameterbereich muss mit dem seit BS2000/OSD-BC 3.0 gültigen Format (VERSION=3) erzeugt werden. Alle Exit-Routinen, die den ERASE-Parameterbereich verwenden, müssen an dieses neue Format angepasst werden.