Dieser SPOOL-Exit ermöglicht es der Systembetreuung, eine Anwenderroutine zu erstellen, die bei jeder Ausgabeoperation des SPOOL aufgerufen wird. Nur bei der Fehlerbehandlung erfolgt kein Aufruf. Die Exit-Routine wird aufgerufen, nachdem ein Kanalprogramm erstellt wurde und bevor dieses zum Drucker gesendet wird. Die Exit-Routine kann für Zeilen- und Laserdrucker verwendet werden. Die APA-Drucker, RSO, Remote-Batch-Verarbeitung, Magnetbänder und Floppy Disk werden nicht unterstützt.
Für die Exit-Routine bestehen folgende Möglichkeiten:
das Kanalprogramm zu akzeptieren
das Kanalprogramm zu verändern
das Kanalprogramm zu unterdrücken.
Folgende Informationen werden an die Exit-Routine übergeben: R1 = A (EX095-Parameterbereich)
Die Returncodes werden im Standardheader eingetragen:
| |||
dd | cc | bb | aa |
Über die Ausführung von EX095 wird im Standardheader ein Returncode übergeben:
aa=Maincode1
bb=Maincode2
cc=Subcode1
dd=Subcode2
X'aa' | Erläuterung |
00 | Kanalprogramm ausgegeben |
04 | Kanalprogramm nicht ausgegeben |
0C | Kanalprogramm nicht ausgeben und EOF |
Hinweise
Die Exit-Routine hat Zugriff zu den SPOOL-eigenen Datenstrukturen. Diese Datenstrukturen sind versionsabhängig.
Wird das Kanalprogramm verändert oder nicht ausgegeben, erfolgt keine Berichtigung des SPOOL-Abrechnungssatzes.
Für die von der Exit-Routine übergebenen Daten wird keine „Code-Translation“ durchgeführt.
Wird das Kanalprogramm verändert, sind folgende Regeln zu beachten:
Das Kanalprogramm und der Datenpuffer dürfen nicht erweitert werden.
Werden die Daten, die von einem Kanalbefehl adressiert sind verkürzt, muss auch die Datenlängenangabe des Kanalbefehls korrigiert werden.
Wird das Kanalprogramm verkürzt, muss auch der „Kettenende-Indikator“ korrigiert werden.
Die Datenadresse kann verändert werden, muss aber immer im SPOOL-Ausgabebereich liegen.
Die Adresse „Beginn Ausgabebereich“ ist im ersten Kanalbefehl der Kette enthalten. Die Adresse „Ende Ausgabereich“ ergibt sich aus der Datenlänge plus Datenadresse des letzten Kanalbefehls.
DSECT
Eine DSECT/CSECT für den Parameterbereich kann mit dem Makro EX095 erzeugt werden, wobei „prefix“ max. 3 Zeichen lang sein darf.
EX095 D RECEXPL DSECT , I/O EXIT ROUTINE P/L * * STANDARD HEADER RETURN INFORMATION * SPOEXBEG DS 0H FHDR MF=(C,SPO),EQUATES=NO DS 0A SPOFHE DS 0XL8 0 GENERAL PARAMETER AREA HEADER * SPOIFID DS 0A 0 INTERFACE IDENTIFIER SPOFCTU 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 SPOFCT DS AL1 2 FUNCTION NUMBER SPOFCTV DS AL1 3 FUNCTION INTERFACE VERSION NUMBER * SPORET DS 0A 4 GENERAL RETURN CODE SPOSRET DS 0AL2 4 SUB RETURN CODE SPOSR2 DS AL1 4 SUB RETURN CODE 2 SPOSR1 DS AL1 5 SUB RETURN CODE 1 SPOMRET DS 0AL2 6 MAIN RETURN CODE SPOMR2 DS AL1 6 MAIN RETURN CODE 2 SPOMR1 DS AL1 7 MAIN RETURN CODE 1 SPOFHL EQU 8 8 GENERAL OPERAND LIST HEADER LENGTH * * * EQUATES FOR EXIT RETURN INFORMATION IN &P.MR1 * SPOEXIO EQU 0 SEND I/O REQUESTED SPOEXNI EQU 4 DO NOT SEND I/O SPOEXEO EQU 12 NO I/O DECLARE EOF SPOPRTYP DC AL1(0) PRINTER TYPE SPOLINES EQU 32 LINES PRINTER TYPE 751 SPOPAGES EQU 33 PAGE PRINTER TYPE 751 SPOLOADL EQU 34 LOADABLE LINE PRINTER TYPE 751 SPOINFOR DC X'00' INFORMATION GIVEN TO EXIT SPONOSCB EQU X'01' IND. SPOSCBAD NOT FILLED SPOUNUS DC XL2'00' **** UNUSED **** SPOCHADD DC A(0) CCW'S CHAIN OR BUFFER ADDRESS SPOSCBAD DC A(0) ADDRESS OF SCB SPODVTYP DS AL1 DEVICE TYPE SPOPRTMN DS CL2 PRINTER MNEMONIC DS CL20 RESERVED FOR EXTENTION SPOPLLEN EQU *-SPOEXBEG LENGTH OF THE PARAMETER LIST
Das Feld SPOCHADD enthält die Adresse des Kanalprogramms. Das Format eines Kanalbefehls ist unabhängig von Kanal- und Maschinentyp.
op | fl | count | address |
op = Operationscode
fl = Flagbyte
count = Datenlänge
address = virtuelle Datenadresse
Hinweise
Die Operationscodes des Kanalbefehls sind abhängig von Kanal- und Druckertyp und werden von SPOOL nach der Rückkehr aus der Exit-Routine nicht überprüft.
Das Feld SPONOSCB zeigt an, dass das Feld SPOSCBAD keine SCB-Adresse enthält und somit nicht verwendet werden kann. Das kommt vor, wenn der SPOOL Ein/Ausgabeoperationen durchführt, die keinem Job zugeordnet sind.
Das Feld SPODVTYP enthält den gleichen detaillierten Gerätetyp, der in der SPOOL-Parameterdatei benutzt wird. Für die Auflösung ist der Makro SPSDTYP zu verwenden.
Das Feld SPOPRTMN enthält die mnemotechnische Bezeichnung des Druckers.