DEFINE PRINTER
([logical-printer-name=]n)
|
||||||
[OUTPUT
operand1]
|
||||||
|
|
|
|
|
|
||
Dieser Abschnitt behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: AT END OF PAGE
| AT TOP OF PAGE | CLOSE PRINTER | DISPLAY | EJECT | FORMAT | NEWPAGE | PRINT | SKIP |
SUSPEND IDENTICAL SUPPRESS |
WRITE | WRITE TITLE | WRITE
TRAILER
Gehört zur Funktionsgruppe: Erstellen von Ausgabe-Reports
Das Statement DEFINE PRINTER dient dazu, einer Report-Nummer einen
symbolischen Namen zuzuordnen und die Zuweisung eines Reports zu einer logischen
Destination (Ausgabeziel, z.B. Drucker) zu steuern. Dies bietet zusätzliche Flexibilität
bei der Erstellung von Ausgaben für verschiedene logische Drucker-Warteschlangen.
Ist bei der Ausführung dieses Statements der angegebene Drucker bereits offen, bewirkt
dieses Statement implizit, dass der Drucker geschlossen wird. Um einen Drucker explizit zu
schließen, sollten Sie das Statement CLOSE
PRINTER verwenden.
Weitere Informationen zum DEFINE PRINTER-Statement, siehe Unicode- und Codepage-Unterstützung in der
Natural-Programmiersprache, Abschnitt Natural-Statements.
Operanden-Definitionstabelle:
| Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| operand1 | C | S | A | U | ja | nein | ||||||||||||||
| operand2 | C | S | A | U | ja | nein | ||||||||||||||
| operand3 | C | S | N | ja | nein | |||||||||||||||
| operand4 | C | S | N | P | I | ja | nein | |||||||||||||
Syntax-Element-Beschreibung:
| Syntax-Element | Beschreibung |
|---|---|
(n)
|
Druckernummer:
Allen im Verlauf einer Session zu benutzenden Druckdateien muss im Voraus eine
Zugriffsmethode zugewiesen werden, und zwar über den Subparameter Die Druckernummer n kann ein Wert im Bereich von 0 -
31 sein. Dies ist die Nummer, die auch verwendet werden soll in einem Die Druckernummer 0 verweist auf den Hardcopy-Drucker. Einige Zugriffsmethoden
unterstützen den Hardcopy-Drucker nicht, z.B. |
logical-printer-name
|
Logischer Druckername:
Als Option können Sie dem Drucker n einen logischen
Druckernamen logical-printer-name zuweisen. Dieser
Name kann für die Die Namenskonventionen für logical-printer-name sind
identisch mit den Namenskonventionen für Benutzervariablen
(siehe Dokumentation Natural benutzen). Mehrere logische
Namen können ein- und derselben Druckernummer zugewiesen werden. Im Gegensatz
zum Wert des |
OUTPUT
operand1
|
Druckername:
Als operand1 können Sie einen der folgenden Namen angeben:
Siehe Druckername für zusätzliche Reports und Remote-Destinationen (Ausgabeziele) weiter unten. Der 8-Byte lange logische Druckername kann zu Anfang über den Subparameter
operand1 kann 1 bis 253 Zeichen lang sein. Ist
operand1 eine Variable, muss die Länge mindestens 8
Bytes betragen. Sie können entweder einen Druckernamen oder einen logischen oder
physischen Dataset-Namen angeben. Das mögliche Format ist abhängig von der
Betriebssystemumgebung und von der über den Subparameter Wenn der angegebene Name bereits für eine andere Druckernummer definiert ist,
und dieser Drucker unbenutzt ist, d.h. den Status geschlossen hat, wird die
Druckausgabe zu diesem Drucker weitergeleitet, wenn der Subparameter Informationen zu betriebssystemabhängigen oder TP-Monitor-abhängigen Drucker-Namenskonventionen befinden sich in folgenden Abschnitten: |
| Bei den folgenden Klauseln können Sie Druckersteuer-Informationen angeben, die vom Spooling-System des TP-Monitors bzw. Betriebssystem interpretiert werden sollen. Sie können eine oder mehrere dieser Klauseln angeben, aber jede von diesen nur einmal. | |
PROFILE
operand2
|
Name der Druckersteuerzeichen-Tabelle:
Bei der Sie definieren die Druckersteuerzeichen-Tabelle über den Profilparameter
Anmerkung |
CODEPAGE operand2
|
Name der Codepage:
Mit
|
Bei den im Folgenden aufgeführten Klauseln können Werte für Parameter des
Spooling-Systems vom TP-Monitor angegeben werden. Den Standardwert dieser Klauseln
können Sie mit den entsprechenden Subparametern des Profilparameters PRINT setzen (siehe
PRINT Schlüsselwortparameter für DEFINE
PRINTER-Statement).
Wird ein Drucker geschlossen, werden alle Optionen auf ihre Standardwerte
zurückgesetzt. Wenn die Definitionen in einer Natural-Umgebung nicht eindeutig sind,
wird empfohlen, sie in jedem Modul mittels des DEFINE PRINTER-Statements zu
setzen.
| Syntax-Element | Beschreibung |
|---|---|
FORMS
operand2
|
Formular:
Maximale Länge des Operanden: 8 Bytes. Der Standardwert dieser Klausel kann mit dem Subparameter |
NAME
operand2
|
Listname:
Maximale Länge des Operanden: 8 Bytes. Der Standardwert dieser Klausel kann mit dem Subparameter |
DISP
operand2
|
Disposition:
Maximale Länge des Operanden: 4 Bytes. Für die
Der Standardwert dieser Klausel kann mit dem Subparameter Wenn die |
CLASS
operand2
|
Spool-Klasse:
Maximale Länge des Operanden: 1 Byte. Der Standardwert dieser Klausel kann mit dem Subparameter |
COPIES
operand3
|
Anzahl zu druckender Exemplare:
operand3 muss ein Ganzzahlwert sein. Der
Standardwert dieser Klausel kann mit dem Subparameter Anmerkung |
PRTY
operand4
|
Listing-Priorität:
Mögliche Werte: 1 - 255. operand4 muss ein Ganzzahlwert sein. Der Standardwert dieser Klausel kann mit dem Subparameter |
Dieser Abschnitt behandelt folgende Themen:
Für eine mit der Zugriffsmethode AM=STD definierte Druckernummer können Sie
operand1 benutzen, um einen logischen oder physischen
Dataset-Namen anzugeben, der dieser Druckernummer zugewiesen werden soll.
In diesem Fall kann operand1 1 bis 253 Stellen lang sein und folgenden Wert annehmen:
ein logischer Dataset-Name (DD-Name, 1 bis 8 Stellen);
ein physischer Dataset-Name eines katalogisierten Datasets (1 bis 44 Stellen) oder ein physischer Dataset-Member-Name (1 bis 44 Stellen für den Dataset-Namen plus 1 bis 8 Stellen in Klammern für den Member-Namen);
ein Pfad- und Member-Name einer HFS-Datei (1 bis 253 Stellen) in einer MVS-UNIX-Services-Umgebung;
eine JES-Spoolfile-Klasse
NULLFILE (bezeichnet ein Dummy-Dataset).
Beispiel:
DEFINE PRINTER (21) OUTPUT 'SYSPRINT'
Das angegebene Dataset mit dem DD-Namen SYSPRINT muss zugewiesen worden
sein, bevor das DEFINE PRINTER-Statement ausgeführt wird. Weitere
Informationen entnehmen Sie dem Abschnitt Zuweisung und
Freigabe von Datasets weiter unten.
Die Zuweisung kann über JCL, CLIST (TSO) oder dynamische Zuweisung (SVC 99) erfolgen.
Für dynamische Zuweisung können Sie die Programmier-Schnittstelle (API)
USR2021N in der Library SYSEXT verwenden.
Der in dem DEFINE PRINTER-Statement angegebene Dataset-Name überschreibt
den in dem Subparameter DEST des Profilparameters PRINT angegebenen Namen.
Optional kann dem Dataset-Namen DDN= vorangestellt werden, um anzuzeigen,
dass es sich um einen DD-Namen handelt, und um Namenskonflikte mit zusätzlichen Reports
zu vermeiden. Zum Beispiel:
DEFINE PRINTER (22) OUTPUT 'DDN=SOURCE'
Beispiel:
DEFINE PRINTER (23) OUTPUT 'TEST.PRINT.FILE'
Das angegebene Dataset muss in katalogisierter Form vorhanden sein. Wenn das
DEFINE PRINTER-Statement ausgeführt wird, wird das Dataset dynamisch über
SVC 99 mit dem aktuellen DD-Namen und der JCL-Option DISP=SHR zugewiesen.
Weitere Informationen entnehmen Sie dem Abschnitt Zuweisung und
Freigabe von Datasets weiter unten.
Wenn der Dataset-Name 8 Stellen hat oder kürzer ist und keinen Punkt (.) enthält,
könnte er fälschlich als DD-Name interpretiert werden. Um dies zu vermeiden, stellen Sie
ihm DSN= voran. Zum Beispiel:
DEFINE PRINTER (22) OUTPUT 'DSN=PRINTXYZ'
Falls das Dataset ein PDS-Member ist, geben Sie den PDS-Member-Namen (1 bis 8 Stellen) in Klammern hinter dem Dataset-Namen (1 bis 44 Stellen) an. Zum Beispiel:
DEFINE PRINTER (4) OUTPUT 'TEST.PRINT.PDS(TEST1)'
Falls das angegebene Member nicht existiert, wird ein neues Member unter diesem Namen angelegt.
Beispiel:
DEFINE PRINTER (14) OUTPUT '/u/nat/rec/test.txt'
Der angegebene Pfadname muss existieren. Wenn das DEFINE PRINTER-Statement
ausgeführt wird, wird die HFS-Datei dynamisch zugewiesen. Falls das angegebene Member
nicht existiert, wird ein neues Member unter diesem Namen angelegt.
Bei dynamischer Zuweisung des Datasets werden folgende z/OS-Pfadoptionen verwendet:
PATHOPTS=(OCREAT,OTRUNC,ORDWR) PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP) FILEDATA=TEXT
Wird eine HFS-Datei geschlossen, wird sie automatisch von z/OS freigegeben (unabhängig
vom Wert des Subparameters FREE im Profilparameter PRINT).
Um ein JES-Spool-Dataset zu erzeugen, geben Sie
SYSOUT=x an (wobei
x die gewünschte Spoolfile-Klasse ist). Für die
Standard-Spoolfile-Klasse geben Sie SYSOUT=* an.
Beispiele:
DEFINE PRINTER (10) OUTPUT 'SYSOUT=A' DEFINE PRINTER (12) OUTPUT 'SYSOUT=*'
Um zusätzliche Parameter für die dynamische Zuweisung anzugeben, verwenden Sie statt
des DEFINE PRINTER-Statements die Programmierschnittstelle (API) USR2021N
in der Library SYSEXT.
Um ein Dummy-Dataset zuzuweisen, geben Sie NULLFILE als
operand1 an:
DEFINE PRINTER (n) OUTPUT 'NULLFILE'
Dies entspricht der JCL-Definition:
// DD-name DD DUMMY
Wenn das DEFINE PRINTER-Statement ausgeführt wird und ein physischer
Dataset-Name, eine HFS-Datei, eine Spoolfile-Klasse oder ein Dummy-Dataset angegeben
wurde, wird das entsprechende Dataset dynamisch zugewiesen. Wenn eine logische
Druckdatei bereits geöffnet ist, wird sie automatisch geschlossen, außer wenn der
Subparameter CLOSE=FIN des Profilparameters PRINT angegeben wurde,
wobei dann ein Fehler ausgegeben wird. Außerdem wird ein bestehendes Dataset mit dem
gleichen aktuellen DD-Namen automatisch freigegeben, bevor das neue Dataset zugewiesen
wird.
Um Fehler durch verfrühtes Öffnen von beim Programmstart noch nicht zugewiesenen
Druckdateien zu vermeiden, sollten Druckdateien mit dem Subparameter OPEN=ACC (Öffnen
bei erstem Zugriff) im Profilparameter PRINT definiert werden.
Im Falle einer HFS-Datei oder einer im PRINT-Profilparameter mit Subparameter FREE=ON
definierten Druckdatei wird die Druckdatei automatisch freigegeben, sobald sie
geschlossen worden ist.
Als Alternative für die dynamische Zuweisung und Freigabe von Datasets steht Ihnen die
Programmierschnittstelle (API) USR2021N in der Library SYSEXT
zur Verfügung. Diese API ermöglicht auch die Angabe zusätzlicher Parameter für die
dynamische Zuweisung.
In Server-Umgebungen kann es zu Fehlern kommen, wenn mehrere Natural-Sessions
versuchen, ein Dataset mit dem gleichen DD-Namen zuzuweisen oder zu öffnen. Um dies zu
vermeiden, geben Sie entweder im Profilparameter PRINT den Subparameter DEST=* an, oder
Sie geben im DEFINE PRINTER-Statement OUTPUT '*' an; Natural
generiert dann einen eindeutigen DD-Namen bei der Zuweisung der physischen Datasets,
wenn das erste DEFINE PRINTER-Statement für die betreffende Druckdatei
ausgeführt wird.
Alle Druckdateien, deren DD-Namen mit CM anfangen, werden von allen
Sessions in einer Server-Umgebung gemeinsam benutzt. Eine solche Druckdatei wird von der
ersten Session geöffnet, aber erst bei Beendigung des Servers physisch geschlossen.
Weitere Informationen siehe Abschnitt Natural as a Server in der
Operations-Dokumentation
Für eine mit der Zugriffsmethode AM=CICS definierte Druckernummer
kann operand1 in Abhängigkeit vom Subparameter TYPE im
Profilparameter PRINT
für den Drucker ein Übergangsdaten- oder Zwischenspeicher-Warteschlangen-Name (1 bis 8
Zeichen) sein. Für TYPE=TD (Übergangsdaten) werden nur die ersten 4 Zeichen
von operand1 berücksichtigt und die Destination (
Ausgabemedium) für die Übergangsdaten muss vorher für CICS definiert worden sein.
Weitere Informationen entnehmen Sie auch dem Abschnitt Natural Print and Work Files under CICS im Natural CICS Interface-Teil der TP Monitor Interfaces-Dokumentation.
Wird AM=COMP gesetzt, kann eine gültige Druckernummer
(TID) oder ein logischer Druckername zugewiesen werden. Beispiel:
DEFINE PRINTER (1) OUTPUT '11' DEFINE PRINTER (2) OUTPUT 'P102'
Wird AM=SMARTS gesetzt, können Sie einen nicht definierten
Druckernamen angeben. Zum Beispiel:
DEFINE PRINTER (14) OUTPUT '/nat/path/printer' DEFINE PRINTER (14) OUTPUT '/nat/path/printer/file/' DEFINE PRINTER (14) OUTPUT 'printer'
Es ist vom Parameter MOUNT_FS von SMARTS abhängig, ob die Datei
auf einem SMARTS Portable File System oder auf dem Native File System residiert. Das erste
Element des Pfades (/nat/) legt das Zieldateien-System fest.
Wenn die Zeichenkette mit einem Schrägstrich (/) abgeschlossen wird, wird das letzte
Element als Namen der Druckdatei benutzt. Sonst wird der Name der Datei aus der
Benutzer-ID und einer Reihenfolge-Nummer generiert. Wenn die Zeichenkette nicht mit einem
Schrägstrich anfängt, wird der Pfad der Datei aus der Umgebungsvariable
$NAT_PRINT_ROOT genommen.
Der angegebene Pfadname muss vorhanden sein. Wenn das Statement DEFINE
PRINTER ausgeführt wird, wird die Datei dynamisch zugewiesen. Wenn das angegebene
Member nicht vorhanden ist, wird ein neues Member dieses Namens erstellt.
Benutzer von Natural Advanced Facilities können den logischen Namen jedes vordefinierten
logischen Druckerprofils angeben. Dieses logische Druckerprofil muss nicht zu dem gerade
aktiven Benutzerprofil gehören; es darf jedes in der NATSPOOL-Datei
definierte logische Druckerprofil sein. Dieses Profil gilt nur während der Ausführung des
Programms, das das DEFINE PRINTER-Statement enthält.
Weitere Informationen siehe Natural Advanced Facilities-Dokumentation.
Mit den folgenden Namen können Sie standardmäßig zusätzliche Reports und Remote-Destinationen (Ausgabeziele) zuweisen:
| Report | Funktion |
|---|---|
BROADCST
|
Ausgabe der Meldungszeile an einen TP-Monitor-Terminal. Gleiche Funktion wie
MESSAGE (siehe unten), außer dass unter Com-plete die Meldung nicht
an den gewünschten Terminal geschickt wird, bis keine Transaktionen auf diesem
Terminal mehr aktiv sind.
|
CCONTROL
|
CCONTROL ist der Name einer bestimmten
Druckersteuerzeichen-Tabelle, die mit dem Drucker n-1
in Verbindung steht; sie darf nicht geändert werden. Weitere Informationen
entnehmen Sie dem Abschnitt Printer-Advance Control Characters in der
Operations-Dokumentation.
|
CONNECT
|
Ausgabe in ein Con-nect-Fach.
Anmerkung für die Natural-Installation: das
|
DUMMY
|
Ausgabe wird gelöscht. |
HARDCOPY
|
Ausgabe an das aktuelle Hardcopy-Gerät. |
INCORE
|
Ausgabe an die NSPF Incore-Datenbank. |
INFOLINE
|
Ausgabe in der Natural-Infoline. Näheres zur Infoline siehe Terminalkommando
%X in der
Terminalkommandos-Dokumentation.
|
MESSAGE
|
Ausgabe der Meldungszeile an einen TP-Monitor-Terminal. Die ersten 8 Bytes
einer Meldung müssen die Ziel-Terminal-ID enthalten. Für TSO ist die User-ID
anstatt der Terminal-ID erforderlich. Ein Beispiel-Programm mit Namen
MSGSW ist in der Library SYSEXTP vorhanden.
|
SOURCE
|
Ausgabe in den Arbeitsbereich des Natural-Editors. |
WORKPOOL
|
Ausgabe in den Natural-ISPF-Workpool. |
Sie können das Write-to-Spool Feature (siehe Operations-Dokumentation) benutzen, um Daten über einen Remote-JES-Knoten zu leiten und sie an einen Benutzer zu senden oder um sie auf einem Gerät zu drucken, das in der Remote-JES-Umgebung definiert ist.
Beispiel 2 - Definition des Druckernamens für Batch-Umgebung
Beispiel 4 - Benutzung einer Session mit vordefiniertem Drucker
/* PRINTER NAME DEFINITION FOR COM-PLETE * DEFINE PRINTER (1) OUTPUT 'TID100' WRITE (1) 'PRINTED ON PRINTER TID100' END
/* OUTPUT ON 'SYSPRINT' (FOR BATCH ENVIRONMENTS) * DEFINE PRINTER (REPORT1 = 1) OUTPUT 'SYSPRINT' WRITE (REPORT1) 'REPORT 1 PRINTED ON PRINTER SYSPRINT' * /* OUTPUT TO DEFAULT PRINTER DESTINATION /* DEFINED WITH PROFILE PARAMETER 'PRINT', SUBPARAMETER 'DEST' * DEFINE PRINTER (REPORT2 = 2) WRITE (REPORT2) 'REPORT PRINTED TO DESTINATION'
** Example 'DPIEX1': DEFINE PRINTER ************************************************************************ * SET CONTROL 'XI+' /* SWITCH INFOLINE MODE ON SET CONTROL 'XT' /* INFOLINE TOP * DEFINE PRINTER (1) OUTPUT 'INFOLINE' WRITE (1) 'EXECUTING' *PROGRAM 'BY' *INIT-USER WRITE 'TEST OUTPUT' EJECT /* FORCE PHYSICAL I/O * SET CONTROL 'X' /* SWITCH BACK TO NORMAL * END
Ausgabe des Programms DPIEX1:
EXECUTING DPIEX1 BY HTR Page 1 05-01-13 14:54:33 TEST OUTPUT
** Example 'DPREX1': DEFINE PRINTER ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME END-DEFINE * * USE SESSION WITH DEFINED PRINTER 1 * DEFINE PRINTER (INVOICE-LIST=1) OUTPUT 'OUTQ1' LIMIT 5 READ EMPL-VIEW BY NAME WRITE (INVOICE-LIST) NAME END-READ * END