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-Exit 090

&pagelevel(4)&pagelevel

Diese Exit-Routine wird aufgerufen, nachdem ein Datensatz der auszugebenden Datei gelesen wurde, aber bevor der Datensatz gemäß den Angaben im PRINT-DOCUMENT vom SPOOL weiterverarbeitet wird.

Der Exit ist verwendbar für die Ausgabe auf Zeilendrucker, Laserdrucker (Seitendrucker). Er kann nicht verwendet werden bei Ausgabe auf Magnetband oder Diskette.

Die Exit-Routine kann folgende Maßnahmen des Systems veranlassen:

  • den gelesenen Datensatz akzeptieren (verändert oder unverändert)

  • den gelesenen Datensatz ersetzen

  • den gelesenen Datensatz übergehen

  • den gelesenen Datensatz und alle bis Dateiende folgenden Datensätze übergehen

Folgende Informationen werden an die Exit-Routine übergeben:

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

Die Returncodes werden im Standardheader eingetragen:

Standardheader:


dd

cc

bb

aa

Über die Ausführung von EX090 wird im Standardheader ein Returncode übergeben:

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

X'aa'

Erläuterung

00

Gelesenen Datensatz akzeptieren

04

Gelesenen Datensatz durch Inhalt des Ausgabeblockes ersetzen

08

Gelesenen Datensatz übergehen

0C

Gelesenen Datensatz und alle Folgenden bis Dateiende übergehen

Hinweise

  • Die Exit-Routine sollte nicht aktiviert bzw. deaktiviert werden, solange ein SPOOLOUT bearbeitet wird.

  • Der Makroaufruf PRNTDOC darf in der Exit-Routine verwendet werden, nicht aber $PRNT und $SPRQ.

  • Die Exit-Routine erhält die Steuerung bei jedem von der Eingabedatei gelesenen Satz, also auch beim Probedruck der ersten Seite, solange bis der Operator den Druck startet. Das Gleiche gilt für die RESPOOL-Verarbeitung (HOLD-PRINT-JOB-/RESUME-PRINT-JOB-Kommando), wobei die Exit-Routine die Lage des RESPOOL-Beginns berücksichtigen muss.

  • Die notwendigen Informationen zur Verarbeitung von Dateien mit Steuerzeichen entnehmen Sie bitte dem PRINT-DOCUMENT-Kommando bzw. dem SPOOL-Control-Block.

  • Wenn eigene Ausgabeblöcke zur Verfügung gestellt werden, ist eine beliebige Speicherklasse erlaubt. Es empfiehlt sich aber, den Klasse-5-Speicher zu nehmen. Der Speicher wird vom Exit wieder freigegeben, sobald der Exit die Kontrolle wieder zurückbekommen hat.

DSECT

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

Die Eingabefelder werden nach dem Rücksprung von der rufenden SPOOL-Komponente nicht mehr abgeprüft. Der erste und der letzte Aufruf der Exit-Routine erfolgt, ohne dass ein Satz der Datei bereitgestellt wird (ICLTYP = X'02' bzw. X'03'). Das Byte IPRTYP gibt das Ausgabegerät an.

Die Ausgabefelder werden von der Exit-Routine versorgt. Das Byte IEXRC steuert die von der Exit-Routine gewünschte Funktion. Die Funktionen sind im Anschluss an die DSECT näher beschrieben.

          EX090 D
* SPOOL INPUT RECORDS ROUTINE EXIT PARAMETER LIST
*
IRC      MFCHK MF=D,DMACID=E90,ALIGN=F,SUPPORT=(C,D),ENTRY=NO,         C
               PREFIX=I,MACID=E90,DNAME=C 
IRC      DSECT ,
               *,##### PREFIX=I, MACID=E90 #####
*
*   STANDARD HEADER RETURN INFORMATION
*
IBEG     DS    0H
00100510
         FHDR  MF=(C,I),EQUATES=NO
00100600
         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
*
IACCPT   EQU   0                        ACCEPT RECORD AS IT IS
IADD     EQU   4                        ADD RECORD(S)
IDEL     EQU   8                        DELETE (SKIP) RECORD
IEOF     EQU   12                       TERMINATE PRINT (SIMULATE EOF)
*
*   INPUT FIELDS FOR THE INPUT EXIT ROUTINE
*
IREC@    DS    A                        INPUT RECORD ADDRESS
ISCB@    DS    A                        SCB ADDRESS
IRCLEN   DS    Y                        INPUT RECORD LENGTH
IPRTYP   DS    AL1                      TYPE OF PRINT
ILINES   EQU   32                      LINES PRINTER TYPE           751
IPAGES   EQU   33                      PAGE PRINTER TYPE            751
ILOADL   EQU   34                      LOADABLE LINE PRINTER TYPE   751
IRBP     EQU   35                      RBP PRINTER TYPE             751
IRSOPB   EQU   36                      PUBLIC RSO PRINTER           752
IRSOPR   EQU   37                      PRIVATE RSO PRINTER          752
IAPAPR   EQU   38                      APA PRINTERS
IPUNCH   EQU   48                      PUNCH TYPE                   751
ICLTYP   DS    AL1                      CALL TYPE 
ICLREC   EQU   1                        RECORD CALL TYPE 
ICLFST   EQU   2                        NO RECORD FIRST TIME CALL
ICLLST   EQU   3                        NO RECORD LAST TIME CALL
         DS    CL4                      RESERVED FOR EXTENSION
* 
*   OUTPUT FIELDS FROM THE INPUT EXIT ROUTINE
* 
IBLK@    DS    A                        DATA BLOCK ADDRESS
IBLKLE   DS    Y                        DATA BLOCK LENGTH
IEXRC    DS    AL1                      R-C FROM EXIT ROUTINE MAY BE 
*                                       STORED HERE IN ADDITION TO 
*                                       THE MAIN RETURN CODE 
IBEXRC   DS    AL1                      BASE R-C FROM EXIT ROUTINE
* 
IBRCOK   EQU   0                        BASE R-C O.K.
INEXS    EQU   4                        EXIT ROUTINE NOT EXISTENT
INACT    EQU   8                        EXIT ROUTINE NOT ACTIVE 
IPARER   EQU   12                       PARAMETER ERROR
         DS    CL8                      RESERVED FOR EXTENSION 
* 
*   INPUT FIELDS FOR THE INPUT EXIT ROUTINE 
* 
IPIR     DS    A                  PRINTER INFORMATION RECORD ADDR.  755
IDVTYP   DS    AL1                DEVICE TYPE                       755
         DS    CL11               RESERVED FOR EXTENTION            755
ILEN     EQU   *-IRC                  ROUTINE EXIT P/L LENGTH

Funktionen der Exit-Routine

Returncode X'00': gelesenen Satz akzeptieren

Die Adresse des Satzes und die Satzlänge werden in den Feldern IREC@ bzw. IRCLEN an die Exit-Routine übergeben. Der Satz enthält kein Satzlängenfeld.

Die Exit-Routine kann den Satz unverändert vom SPOOL akzeptieren lassen oder ihn ändern. Wenn der Satz dabei nicht länger wird, kann er direkt im Eingabepuffer verändert werden. Die Felder IBLK@ und IBLKLE müssen in diesem Fall mit der Adresse des Satzes aus IREC@ und der gültigen Satzlänge versorgt werden. Wird der Satz durch die Änderung verlängert, muss die Exit-Routine den Satz in einem eigenen, über IBLK@ adressierten Puffer bereitstellen.

Aufbau des Puffers:

Returncode X'04': gelesenen Satz ersetzen

SPOOL ersetzt den eingelesenen Satz durch die Sätze, die von der Exit-Routine im Ausgabeblock (Adresse in IBLK@) bereitgestellt wurden:

Die Exit-Routine muss die Felder IBLK@ und IBLKLE versorgen. Soll der gelesene Satz Bestandteil des Ausgabeblocks sein, muss ihn die Exit-Routine dorthin übertragen.

Returncode X'08': gelesenen Satz übergehen

Die Exit-Routine muss nur den Returncode setzen, weitere Aktionen sind nicht erforderlich.

Returncode X'0C': alle Sätze bis Dateiende übergehen

Die Exit-Routine muss nur den Returncode setzen, weitere Aktionen sind nicht erforderlich.

Operanden im PRINT-DOCUMENT-Kommando/PRNTDOC-Makro

Die Exit-Routine muss alle in PRINT-DOCUMENT-Kommandos angegebenen Operanden beachten! Die entsprechenden Werte können dem SPOOL-Kontrollblock entnommen werden.

RECORD-PART=*PARAMETERS(FIRST-CHARACTER = n):
Alle von der Exit-Routine eingefügten Sätze müssen länger als n Bytes sein, sonst werden sie nicht gedruckt.

OUTPUT-PART=*RANGE(FROM = +n):
Die Sätze 1–n werden ebenfalls an die Exit-Routine übergeben.

OUTPUT-PART=*LAST(LAST = -n):
Die Exit-Routine erhält die Steuerung zunächst für alle Sätze von 1–m (Dateiende, keine Ausgabe). Danach setzt SPOOL den FROM-Wert auf z = (m–n+1) und arbeitet die Datei ab wie bei FROM = +z.

ADDITIONAL-COPIES = n:
Die Exit-Routine kann bei wiederholter Ausgabe einer Datei nicht zwischen den einzelnen Kopien unterscheiden, d.h. es gibt keinen Unterschied in den übergebenen Parametern oder Datensätzen.