Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

SPOOL-Exits (091/092) für Deckblatt und Schlussblatt

&pagelevel(4)&pagelevel

Mit diesen System Exits wird die Gestaltung der Deckblätter / Schlussblätter bei Ausgaben auf Drucker durch Exit-Routinen gesteuert.

Die Exit-Routinen können dabei die Standardausgabe des SPOOL-Systems unterdrücken, durch eine Alternativausgabe ersetzen oder zusätzlich zur Standardausgabe eine Alternativausgabe veranlassen.

Alternativausgaben für Deck- oder Schlussblätter werden von der Systembetreuung zur Verfügung gestellt und vom Anwender mit den Operanden HEADER-EXIT-NUMBER und TRAILER-EXIT-NUMBER im Kommando PRINT-DOCUMENT angefordert. Die Standardausgabe kann unabhängig von einer EXIT-Routine durch einen Text (Operand HEADER-PAGE-TEXT im Kommando PRINT-DOCUMENT) modifiziert werden.

Beispiel

Festgelegt werden muss ein Standardname, z.B.

HEADERPAGETEXT.n,

der eine SAM-, ISAM-Datei oder eine Jobvariable bezeichnet. Darin können Sie Texte hinterlegen, die Sie mit dem Kommando

PRINT-DOCUMENT ...,LAYOUT-CONTROL=*PARAMETERS(COVER-PAGES= -

  *PARAMETERS(HEADER-EXIT-NUMBER=...))

ansprechen können.

Die Exit-Routine muss auf die Datei $userid.HEADERPAGETEXT.n zugreifen und den Text in den Puffer für das Deckblatt eintragen. Eine Auswahl erfolgt erst, wenn die Exit-Routine aufgerufen ist. Diese Exit-Routinen sichern und stellen alle Register wieder her.

Die Routinen werden aufgerufen:

  • wenn kein Deck- bzw. Schlussblatt erzeugt wurde

  • bei bestehendem Deck- bzw. Schlussblatt, um den Verwaltungspuffer wieder aufzubauen

Deckblatt-Exit (091)

Folgende Informationen werden an die EXIT-Routine übergeben:

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

Die Returncodes werden im Standardheader eingetragen:


dd

cc

bb

aa

Über die Ausführung von EX091 und EX092 wird im Standardheader ein Returncode übergeben:

aa=Maincode1
bb=Maincode2
cc=Subcode1
dd=Subcode2

X'aa'

Erläuterung

00

Kein Deck- bzw. Schlussblatt

01

Ohne Änderung Systemdeck- bzw. -schlussblatt drucken

02

Angegebenes alternatives Deck- bzw. Schlussblatt drucken

03

Das Systemdeck- bzw. Schlussblatt ohne Änderung und das angegebene alternative Deck- bzw. Schlussblatt drucken

04

Nur für Exit 92. Kein Schlussblatt. Der letzte Vorschub auf den Vertikaltabulator „Kanal 1“ soll nicht durchgeführt werden

DSECT

Eine DSECT/CSECT für den Parameterbereich (Adresse wird in Register 1 übergeben) kann mit dem Makro EX091 erzeugt werden, wobei „prefix“ max. 3 Zeichen lang sein darf.

         EX091 D
*
*   SPOOL HEADER  PAGE  ROUTINE EXIT PARAMETER LIST
*
IHD      MFCHK MF=D,DMACID=E91,ALIGN=F,SUPPORT=(C,D),ENTRY=NO,         C
               PREFIX=I,MACID=E91,DNAME=C
IHD      DSECT ,
               *,##### PREFIX=I, MACID=E91 #####
* 
*   STANDARD HEADER RETURN INFORMATION 
* 
IBEG     DS    0H
         FHDR  MF=(C,I),EQUATES=NO
         DS    0A
IFHE     DS    0XL8            0   GENERAL PARAMETER AREA HEADER
*
IIFID    DS    0A              0   INTERFACE IDENTIFIER
IFCTU    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
IFCT     DS    AL1             2   FUNCTION NUMBER
IFCTV    DS    AL1             3   FUNCTION INTERFACE VERSION NUMBER
*
IRET     DS    0A              4   GENERAL RETURN CODE
ISRET    DS    0AL2            4   SUB RETURN CODE
ISR2     DS    AL1             4   SUB RETURN CODE 2
ISR1     DS    AL1             5   SUB RETURN CODE 1
IMRET    DS    0AL2            6   MAIN RETURN CODE
IMR2     DS    AL1             6   MAIN RETURN CODE 2
IMR1     DS    AL1             7   MAIN RETURN CODE 1
IFHL     EQU   8               8   GENERAL OPERAND LIST HEADER LENGTH
*
* 
*   EQUATES FOR EXIT RETURN INFORMATION IN &P.MR1 
* 
IEXNH    EQU   0                        NO HEADER PAGE OUTPUT 
IEXSY    EQU   1                        SYSTEM HEADER UNALTERED
IEXAL    EQU   2                        ALTERNATIVE HEADER 
IEXBO    EQU   3                        SYSTEM AND ALTERNATIVE HEADER
*
*   INPUT FIELDS FOR THE INPUT EXIT ROUTINE
*
IPRTYP   DS    C                      PRINTER TYPE
ILINES   EQU   X'20'                  LINES PRINTER TYPE
IPAGES   EQU   X'21'                  PAGE PRINTER TYPE
ILOADL   EQU   X'22'                  LOADABLE LINE PRINTER TYPE    753
IRBP     EQU   X'23'                  RBP PRINTER TYPE              753
IRSOPB   EQU   X'24'                  PUBLIC RSO PRINTER            753
IRSOPR   EQU   X'25'                  PRIVATE RSO PRINTER           753
IAPAPR   EQU   X'26'                  APA PRINTER
IPUNCH   EQU   X'30'                  PUNCH TYPE                    753
ICLTYP   DS    C                      CALL TYPE
INORM    EQU   X'01'                  NORMAL CALL                   754
IRETRY   EQU   X'02'                  RETRY                         754
INOBUF   EQU   X'04'                  NO BUFFER                     754
ISMLHD   EQU   X'08'                  SMALL HEADER                  802
         DS    CL2                    RESERVED
ISCB@    DS    A                      SCB ADDRESS
ISYIB@   DS    A                      SYSTEM BUFFER
ILNPG    DS    F                      # OF LINES PER PAGE
ICHLN    DS    F                      # OF CHAR. PER LINE
*
*   OUTPUT FIELDS FROM THE INPUT EXIT ROUTINE
* 
IUSOB@   DS    A                      USER BUFFER ADDRESS
IUSOBL   DS    F                      USER BUFFER LENGTH
ISKIP#   DS    F                      # SKIP RECORDS
ISYDF    DS    F                      SYSTEM DUPL FACT
IUSDF    DS    F                      USER DUPL FACT
         DS    CL12                   RESERVED FOR EXTENSION
*
*   INPUT FIELDS FOR THE INPUT EXIT ROUTINE
* 
IPIR     DS    A                  PRINTER INFORMATION RECORD ADDR. 756
IDVTYP   DS    AL1                DEVICE TYPE                      756
         DS    XL1                HW ALIGNMENT
IFREQ#   DS    H                  SEPARATOR PAGES FREQUENCE #      865
*                                 FREQ# IS INPUT / OUTPUT          865
IFWFR@   DS    A                  ADDR OF 10 FREE FW FOR EXIT 091  865
         DS    2F                 RESERVED - FREE FOR USE          865
ILEN     EQU   *-IHD                    ROUTINE EXIT P/L LENGTH

 

Vor Aufruf der Exit-Routine versorgte Felder:

IPRTYP

Ausgabegerät

ILINES

Zeilendrucker

IPAGES

Laserdrucker / Seitendrucker

ILOADL

Drucker mit ladbarem VFB

IRBP

RBP-Drucker

IRSOPB

gemeinschaftlicher RSO-Drucker

IRSOPR

privater RSO-Drucker

IAPAPR

APA-Drucker

ICLTYP

Art des Aufrufs

INORM

normaler Aufruf

IRETRY

wiederholter Aufruf: wenn der Speicherbereich für das
Alternativdeckblatt zerstört oder nicht korrekt aufgebaut ist

INOBUF

kein System-Standarddeckblatt: es wird keine Pufferadresse ISYIB@
übergeben; die Exit-Routine kann eine Alternativausgabe
veranlassen, entsprechend ILNPG und ICHLN (s.u.)

ISMLHD

kurzes Deckblatt (nach einer Jobunterbrechung)

ISCB@

Adresse des SPOOL-Kontrollblocks (SCB)

ISYIB@

Adresse des Systempuffers

ILNPG

Anzahl Zeilen pro Deckblatt-Seite

ICHLN

Anzahl Zeichen pro Deckblatt-Zeile

Felder, die von der Exit-Routine versorgt werden können:

IUSOB@

Klasse-3-Speicheradresse, an der das Alternativ-Deckblatt bereitgestellt ist

IUSOBL

Länge des Puffers für das Alternativdeckblatt, entsprechend dem von der Exit-
Routine mit $GETMEM angeforderten Pufferbereich

ISKIP#

Anzahl Sätze des Alternativdeckblatts, die bei einer Wiederholung übergangen, d.h.
nicht gedruckt werden sollen

ISYDF

Wiederholungsfaktor für die Ausgabe des Standarddeckblatts; Standard: 1

IUSDF

Wiederholungsfaktor für die Ausgabe des Alternativdeckblatts; Standard: 1

IPIR

Adresse des speziellen Drucker-Informations-Satzes.
Für genauere Informationen wird die Hardware-Beschreibung benötigt.
(Unterstützung zurzeit nur für LP65-Drucker)

IDVTYP

Gerätetyp
Genauere Informationen dazu siehe SPOOL-Makro SPSINF.

Schlussblatt-Exit (092)

Folgende Informationen werden an die Exit-Routine übergeben:

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

DSECT

Eine DSECT/CSECT für den Parameterbereich (Adresse in R1) kann mit dem Makro EX092 erzeugt werden, wobei „prefix“ max. 3 Zeichen lang sein darf.

          EX092 D
*
*   SPOOL TRAILER PAGE  ROUTINE EXIT PARAMETER LIST
*
ITR      MFCHK MF=D,DMACID=E92,ALIGN=F,SUPPORT=(C,D),ENTRY=NO,         C
               PREFIX=I,MACID=E92,DNAME=C 
ITR      DSECT ,
               *,##### PREFIX=I, MACID=E92 #####
* 
*   STANDARD HEADER RETURN INFORMATION
* 
IBEG     DS    0H
         FHDR  MF=(C,I),EQUATES=NO
         DS    0A
IFHE     DS    0XL8            0   GENERAL PARAMETER AREA HEADER
*
IIFID    DS    0A              0   INTERFACE IDENTIFIER
IFCTU    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
IFCT     DS    AL1             2   FUNCTION NUMBER
IFCTV    DS    AL1             3   FUNCTION INTERFACE VERSION NUMBER
*
IRET     DS    0A              4   GENERAL RETURN CODE
ISRET    DS    0AL2            4   SUB RETURN CODE
ISR2     DS    AL1             4   SUB RETURN CODE 2
ISR1     DS    AL1             5   SUB RETURN CODE 1
IMRET    DS    0AL2            6   MAIN RETURN CODE
IMR2     DS    AL1             6   MAIN RETURN CODE 2
IMR1     DS    AL1             7   MAIN RETURN CODE 1
IFHL     EQU   8               8   GENERAL OPERAND LIST HEADER LENGTH

 

*
*
*   EQUATES FOR EXIT RETURN INFORMATION IN &P.MR1
*
IEXNT    EQU   0                        NO TRAIL. PAGE OUTPUT
IEXSY    EQU   1                        SYSTEM TRAIL. UNALTERED
IEXAL    EQU   2                        ALTERNATIVE TRAILER PAGE
IEXBO    EQU   3                        SYSTEM AND ALTERNATIVE TRAILER 
*   INPUT FIELDS FOR THE INPUT EXIT ROUTINE
*
IPRTYP   DS    C                        PRINTER TYPE
ILINES   EQU   X'20'                  LINES PRINTER TYPE
IPAGES   EQU   X'21'                  PAGE PRINTER TYPE             753
ILOADL   EQU   X'22'                  LOADABLE LINE PRINTER TYPE    753
IRBP     EQU   X'23'                  RBP PRINTER TYPE              753
IRSOPB   EQU   X'24'                  PUBLIC RSO PRINTER            753
IRSOPR   EQU   X'25'                  PRIVATE RSO PRINTER           753
IAPAPR   EQU   X'26'                  APA PRINTERS
IPUNCH   EQU   X'30'                  PUNCH TYPE                    753
ICLTYP   DS    C                        CALL TYPE
INORM    EQU   X'01'                  NORMAL CALL                   754
IRETRY   EQU   X'02'                  RETRY                         754 
INOBUF   EQU   X'04'                  NO BUFFER                     754 
         DS    CL2                RESERVED
ISCB@    DS    A                        SCB ADDRESS
ISYIB@   DS    A                        SYSTEM BUFFER
ILNPG    DS    F                  # OF LINES PER PAGE
ICHLN    DS    F                        # OF CHAR. PER LINE
*
*   OUTPUT FIELDS FROM THE INPUT EXIT ROUTINE
*
IUSOB@   DS    A                        USER BUFFER ADDRESS
IUSOBL   DS    F                        USER BUFFER LENGTH
ISKIP#   DS    F                  # SKIP RECORDS
ISYDF    DS    F                  SYSTEM DUPL FACT
IUSDF    DS    F                  USER DUPL FACT
         DS    CL12                     RESERVED FOR EXTENSION
*
*   INPUT FIELDS FOR THE INPUT EXIT ROUTINE
*
IPIR     DS    A                  PRINTER INFORMATION RECORD ADDR. 756
IDVTYP   DS    AL1                DEVICE TYPE                      756 
         DS    CL11               RESERVED FOR EXTENTION           756 
ILEN     EQU   *-ITR                   ROUTINE EXIT P/L LENGTH

 

Vor Aufruf der Exit-Routine versorgte Felder:

YDDXMAIN

Indikator für das Hauptereignis
YDDXAPPL Hauptereignis ' APP' (betr. Anwendungen)

IPRTYP

Ausgabegerät

ILINES

Zeilendrucker

IPAGES

Laserdrucker / Seitendrucker

ILOADL

Drucker mit ladbarem VFB

IRBP

RBP-Drucker

IRSOPB

gemeinschaftlicher RSO-Drucker

IRSOPR

privater RSO-Drucker

IAPAPR

APA-Drucker

ICLTYP

Art des Aufrufs

INORM

normaler Aufruf

IRETRY

wiederholter Aufruf: wenn der Speicherbereich für das Alternativschlussblatt zerstört oder nicht korrekt aufgebaut ist

INOBUF

kein System-Standardschlussblatt: es wird keine Pufferadresse ISYIB@ übergeben; die Exit-Routine kann eine Alternativausgabe veranlassen, entsprechend ILNPG und ICHLN (s.u.)

ISMLHD

kurzes Schlussblatt (nach einer Jobunterbrechung)

ISCB@

Adresse des SPOOL-Kontrollblocks (SCB)

ISYIB@

Adresse des Systempuffers

ILNPG

Anzahl Zeilen pro Schlussblatt-Seite

ICHLN

Anzahl Zeichen pro Schlussblatt-Zeile

Felder, die von der Exit-Routine versorgt werden können:

IUSOB@

Klasse-3-Speicheradresse, an der das Alternativ-Schlussblatt bereitgestellt ist

IUSOBL

Länge des Puffers für das Alternativschlussblatt, entsprechend dem von der Exit-Routine mit $GETMEM angeforderten Pufferbereich

ISKIP#

Anzahl Sätze des Alternativschlussblatts, die bei einer Wiederholung übergangen, d.h. nicht gedruckt werden sollen

ISYDF

Wiederholungsfaktor für die Ausgabe des Standardschlussblatts; Standard: 1

IUSDF

Wiederholungsfaktor für die Ausgabe des Alternativschlussblatts; Standard: 1

IPIR

Adresse des speziellen Drucker-Informations-Satzes.
Für genauere Informationen wird die Hardware-Beschreibung benötigt.
(Unterstützung zurzeit nur für LP65-Drucker)

IDVTYP

Gerätetyp
Genauere Informationen dazu siehe SPOOL-Makro SPSINF.

Aufbau der Puffer für Deck-/Schlussblätter

Alternativ-Ausgabe

Für den Aufbau von Alternativ-Ausgaben muss die Exit-Routine einen Puffer im Klasse-3-Speicher reservieren. Die Deck-/Schlussblätter werden aus Sätzen variabler Länge aufgebaut, d.h. mit vorangestelltem 4-Byte-Satzlängenfeld. Die ersten 4 Bytes des Puffer enthalten linksbündig die genutzte Pufferlänge, höchstens 32767 Bytes = X'7FFF'.

pl:

genutzte Pufferlänge

sl:

Satzlänge/Zeilenlänge + 4

_:

Leerzeichen (X' 40' )

x:

Kennzeichen für Ausgabetyp (nur SPOOL-intern ausgewertet)

X' 0A' Drucker

satz:

bei PRINT-Ausgabe: 1 Byte Drucksteuerzeichen (s. unten) + Text

X' 40': Kein Vorschub vor dem Drucken

X' 41': 1 Zeile Vorschub vor dem Drucken

X' 42': 2 Zeilen Vorschub vor dem Drucken

X' 43': 3 Zeilen Vorschub vor dem Drucken

Andere Steuerzeichen können zu unerwünschten Ergebnissen führen, da sie nicht von jedem Gerätetyp verstanden werden.

Systemdeckblatt

Das Deckblattformat ist abhängig von Papiergröße und verwendetem Zeichensatz. Wieviele Zeilen auf eine Druckseite ausgegeben werden können, lässt sich folgendermaßen bestimmen:

Max.Zeilenzahl = Papierformat in Zoll * Zeilen / Zoll

Ausnahme: Wird bei Laserdruckern das Deckblatt unter LOOP-Steuerung ausgedruckt, ist die Zeilenzahl durch den VFB vorgegeben!

Die Zeilen des Deckblatts werden entsprechend der unten beschriebenen Rangfolge gedruckt (abhängig von der maximalen Zeilenzahl).

Rangfolge

Adress- und Identifikationsfeld (24 Zeilen)
Benutzertext (10 Zeilen) + 2 Leerzeilen         in „Riesen“-Lettern
Auftragsname (10 Zeilen) + 2 Leerzeilen         in „Riesen“-Lettern
Benutzerkennung (10 Zeilen ) + 2 Leerzeilen     in „Riesen“-Lettern
Abrechnungsnummer (10 Zeilen) + 2 Leerzeilen    in „Riesen“-Lettern

Stehen weniger als 24 Zeilen zur Verfügung, wird kein Standard-Deckblatt gedruckt. Die Exit-Routine kann jedoch geeignete Maßnahmen treffen.

Jede gedruckte Zeile wird als Satz variabler Länge gespeichert, d.h. mit einem vorangestellten Satzlängenfeld (4 Bytes). Leerzeilen enthalten ein Leerzeichen (X'40') als Satzinhalt.

Beispiel

Aufbau eines Standard-Deckblatts, abhängig von Zeichen- und Zeilendichte

Format (Seitengröße): 9 x 11 Zoll

Zeichensatz A: 15 Zeichen/Zoll; 8 Zeilen/Zoll (= 15 cpi / 8 lpi)

Zeichensatz B: 12 Zeichen/Zoll; 6 Zeilen/Zoll (= 12 cpi / 6 lpi)


Zeichensatz A
(15 cpi / 8 lpi)

Zeichensatz B
(12 cpi / 6 lpi)

Anzahl Zeichen pro Zeile

11 * 15 = 165

11 * 12 = 132

Anzahl Zeilen pro Seite

9 * 8 = 72

9 * 6 = 54

Deckblatt-Aufbau

Adressfeld (24 Zeilen)

freie Zeilen: 48

freie Zeilen: 30

Auftragsname (10 + 2 Zeilen)

freie Zeilen: 36

freie Zeilen: 18

Benutzerkennung (10 + 2 Zeilen)

freie Zeilen: 24

freie Zeilen: 6

Abrechnungsnummer (10 + 2 Zeilen)

freie Zeilen: 12

freie Zeilen: -

Bemerkung

Deckblatt wird vollständig ausgedruckt

Abrechnungsnummer fehlt

Länge der Sternchenzeilen

165 '*'

132 '*'

Papiervorschub

Nach Drucken des Systemschlussblatts wird das Folgeblatt auf die erste Zeile positioniert. Das gilt auch, wenn kein Deck- oder Schlussblatt gedruckt wird.

Anwendungshinweise

Die sinnvolle Verwendung der obenbeschriebenen Exits setzt geeignete Vereinbarungen zwischen Systembetreuung und Kunden voraus, z.B. einen Standardnamen für eine SAM- oder ISAM-Datei (oder auch eine Jobvariable). In dieser Datei kann sowohl der privilegierte als auch der nichtprivilegierte Benutzer ein Alternativ-Deckblatt aufbauen.

Beispiel für den Aufbau eines Standardnamens:

HEADERPAGETEXT.n, 0 <= n <= 2147.483.639

Das Alternativdeckblatt kann dann ausgedruckt werden mit PRINT-DOCUMENT-Kommando (Operand HEADER-EXIT-NUMBER = n) oder PRNTDOC-Makro (Operand COVPAGE).

Die Exit-Routine muss dann auf die Datei $userid.HEADERPAGETEXT.n zugreifen und den Deckblatt-Puffer mit dem Alternativtext versorgen.

Ob ein Deck-/Schlussblatt gedruckt wird, hängt ab von der Anzahl der Zeichen, die pro Zeile gedruckt werden können.

Wenn bei den Exits 091/092 eigene Ausgabeblöcke zur Verfügung gestellt werden, ist der Klasse-3-Speicher eforderlich. Der Speicher wird von SPOOL, nicht von den Exits wieder freigegeben.