PRINT

PRINT [(rep)] [NOTITLE] [NOHDR] [(statement-parameters)]

nX

'text' ' [(attributes)]

nT 'c'(n) [(attributes )]
/ ['='] operand1 [(parameters)]

Dieses Dokument 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 | DEFINE PRINTER | DISPLAY | EJECT | FORMAT | NEWPAGE | SKIP | SUSPEND IDENTICAL SUPPRESS | WRITE | WRITE TITLE | WRITE TRAILER

Gehört zur Funktionsgruppe: Erstellen von Ausgabe-Reports


Funktion

Das Statement PRINT dient dazu, Ausgaben im freien Format zu erzeugen.

Das PRINT-Statement unterscheidet sich vom WRITE-Statement in folgenden Punkten:

  • Die Ausgabelänge der einzelnen Operanden ergibt sich aus der Länge der tatsächlich ausgegebenen Werte und nicht aus der Länge der verwendeten Felder. Vorangestellte Nullen (bei numerischen Werten) und nachgestellte Leerzeichen (bei alphanumerischen Werten) werden nicht mit ausgegeben.

    Mit dem Session-Parameter AD können Sie festlegen, ob numerische Werte links- oder rechtsbündig ausgegeben werden sollen: mit AD=L werden einem numerischen Wert nachfolgende Leerstellen nicht ausgegeben; mit AD=R werden einem numerischen Wert vorangestellte Leerzeichen mit ausgegeben.

  • Überschreitet die Ausgabe die vorgegebene Zeilenlänge (Parameter LS), wird die Ausgabe in der nächsten Zeile wie folgt fortgesetzt:

    Eine alphanumerische Konstante oder der Inhalt einer alphanumerischen Variablen (ohne Editiermaske) wird ab dem letzten auf der aktuellen Zeile ausgegebenen Leerzeichen oder Zeichen, das weder ein Buchstabe noch eine Ziffer ist, abgetrennt. Der erste Teil des Wertes verbleibt auf der aktuellen Zeile, der abgetrennte Teil wird in der nächsten Zeile ausgegeben. Führende Leerzeichen im zweiten Teil werden entfernt und Leerzeilen werden dadurch unterdrückt.

    Bei allen anderen Operanden wird der gesamte Wert, der nicht mehr in die aktuelle Zeile passt, in der nächsten Zeile ausgegeben.

Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1   S A G N A U N P I F B D T L   G O ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
(rep)
Report-Spezifikation:

Mit der Notation (rep) kann ein bestimmter anderer Report angegeben werden, auf den sich das Statement beziehen soll.

Es kann ein Wert von 0 bis 31 oder ein logischer Name, der mit einem DEFINE PRINTER-Statement zugewiesen wurde, angegeben werden.

Falls nichts anderes angegeben wird, bezieht sich das PRINT-Statement auf den ersten Report (Report 0).

Wenn diese Druckdatei für Natural als PC definiert wird, wird der Report auf den PC heruntergeladen, siehe Beispiel 2. Informationen darüber, wie Sie das Format eines mit Natural erstellten Ausgabe-Reports steuern, siehe Steuerung der Ausgabe von Daten im Leitfaden zur Programmierung.

NOTITLE
Unterdrückung der Standard-Seitenüberschrift:

Für jede über ein PRINT-Statement ausgegebene Seite generiert Natural eine Titelzeile, die die laufende Seitennummer, die Uhrzeit und das Datum enthält. Die Uhrzeit wird zu Beginn der Session (TP-Betrieb) oder zu Beginn des Jobs (Batch-Betrieb) gesetzt. Die generierte Titelzeile kann entweder durch eine eigene mit einem WRITE TITLE-Statement angegebene Titelzeile überschrieben oder durch eine NOTITLE-Klausel im PRINT-Statement unterdrückt werden.

Beispiele:

  • Generierte Titelzeile wird ausgegeben:

    PRINT NAME
  • Eigene Titelzeile wird ausgegeben:

    PRINT NAME WRITE TITLE 'user-title'
    
  • Keine Titelzeile wird ausgegeben:

    PRINT NOTITLE NAME

Wenn die NOTITLE-Option verwendet wird, gilt sie für alle DISPLAY-, PRINT- und WRITE-Statements im selben Objekt, die Daten auf denselben Report schreiben.

NOHDR
Unterdrückung der Spaltenüberschrift:

Das PRINT-Statement selbst erzeugt keine Spaltenüberschriften. Wenn Sie allerdings das PRINT-Statement zusammen mit einem DISPLAY-Statement verwenden, können Sie mit der Option NOHDR des PRINT-Statements die vom DISPLAY-Statement generierten Spaltenüberschriften unterdrücken:

Die NOHDR-Option ist nur relevant, wenn das PRINT-Statement nach einem DISPLAY-Statement steht, die Ausgabe sich insgesamt über mehr als eine Seite erstreckt und die Ausführung des PRINT-Statements zur Ausgabe einer neuen Seite führt.

Ohne NOHDR-Option würden auf dieser neuen Seite die DISPLAY-Spaltenüberschriften ausgegeben, mit NOHDR werden sie dort nicht ausgegeben.

statement-parameters
Parameter-Definition auf Statement-Ebene:

Unmittelbar nach dem Schlüsselwort PRINT selbst oder nach einem der auszugebenden Felder können auf Statement-Ebene in Klammern Session-Parameter gesetzt werden.

Diese Parameter haben dann für das jeweilige Statement oder Feld Gültigkeit statt der betreffenden mit einem GLOBALS-Kommando, SET GLOBALS- (nur im Reporting Mode) oder FORMAT-Statement gesetzten Parameter. Werden mehrere Parameter angegeben, müssen sie jeweils durch ein oder mehrere Leerzeichen voneinander getrennt werden. Die Angabe eines Parameters darf sich nicht über zwei Quellcode-Zeilen erstrecken.

Die hier gültigen Parameter-Einstellungen kommen nur für Variablen-Felder in Betracht, haben aber keine Auswirkungen auf Text-Konstanten. Wenn Sie Feldattribute für eine Text-Konstante setzen möchten, dann müssen Sie explizit für dieses Element gesetzt werden, siehe Parameter-Definition auf Element- Ebene.

Siehe auch:

nX, nT, / Siehe Feldpositionierung, Text, Attributzuweisung weiter unten.

Liste der Parameter

Parameter, die beim PRINT-Statement angegeben werden können: Spezifikation:
S = auf Statement-Ebene
E =auf Element-Ebene
AD Attribute Definition SE
AL Alphanumeric Length for Output SE
CD Color Definition SE
CV Control Variable SE
DF Date Format SE
DL Display Length for Output SE
DY Dynamic Attributes SE
EM Edit Mask SE
EMU Unicode Edit Mask E
FL Floating Point Mantissa Length SE
MC Multiple-Value Field Count S
MP Maximum Number of Pages of a Report S
NL Numeric Length for Output SE
PC Periodic Group Count S
PM Print Mode SE
SG Sign Position SE
ZP Zero Printing SE

Beschreibungen der einzelnen Parameter entnehmen Sie bitte der Parameter-Referenz.

Beispiel für Parameter-Benutzung auf Statement- und Element-Ebene

DEFINE DATA LOCAL
1 VARI (A4)     INIT <'1234'>                  /*     Output 
END-DEFINE                                     /*    Produced
*                                              /*    ---------  
PRINT           'Text'           VARI          /*    Text 1234
PRINT (PM=I)    'Text'           VARI          /*    Text 4321
PRINT           'Text' (PM=I)    VARI (PM=I)   /*    txeT 4321
PRINT           'Text' (PM=I)    VARI          /*    txeT 1234
END

Feldpositionierung, Text, Attributzuweisung

nX

 

'text' [(attributes)]

nT   'c' ( n ) [(attributes)]
/

['='] operand1  [(parameters)]

Feldpositionierungsnotationen

Syntax-Element Beschreibung
nX
Spaltenabstand:

Mit dieser Notation können Sie zwischen den auszugebenden Werten n Leerstellen einfügen. n darf nicht 0 sein. Beispiel:

PRINT NAME 5X SALARY
nT
Setzen von Tabulatoren:

Mit dieser Notation können Sie Tabulatoren setzen, d.h. die Ausgabe eines Wertes beginnt ab Spalte n. Wird ein Tabulator gesetzt, dessen Position bereits durch einen anderen ausgegeben Wert besetzt ist, erfolgt ein Zeilenvorschub.

Im folgenden Beispiel wird NAME ab Spalte 25 ausgegeben und SALARY ab Spalte 50:

PRINT 25T NAME 50T SALARY
/
Zeilenvorschub − Schrägstrich-Notation:

Mit einem Schrägstrich (/) bewirken Sie zwischen zwei Feldern oder Textelementen einen Zeilenvorschub. Beispiel:

PRINT NAME / SALARY

Text-/Attributzuweisung

Syntax-Element Beschreibung
'text'
Zuweisung von Text:

Eine in Apostrophen angegebene Zeichenkette 'text' wird als Text ausgegeben. Beispiel:

PRINT 'EMPLOYEE' NAME 'MARITAL/STATUS' MAR-STAT
'c' (n)
Wiederholung von Zeichen:

Wie 'text'. Ausnahme: das Zeichen c wird n-mal unmittelbar vor dem Feldwert ausgegeben. Beispiel:

PRINT '*' (5) '=' NAME
'='
Position des Feldinhalts hinter Feldüberschrift:

Ein Gleichheitszeichen in Apostrophen unmittelbar vor einem Feld bewirkt, dass unmittelbar vor dem Feldwert der Name des Feldes ausgegeben wird (wie im DEFINE DATA-Statement oder im DDM definiert). Beispiel:

PRINT '=' NAME
operand1
Auszugebendes Feld:

Als operand1 geben Sie das auszugebende Feld an.

parameters
Parameter-Definition auf Elementebene (Feldebene):

Unmittelbar nach operand1 können Sie in Klammern einen oder mehrere Parameter (siehe obige Tabelle) angeben. Diese Parameter haben dann für das jeweilige Feld Gültigkeit statt der betreffenden, auf Statement-Ebene mit einem GLOBALS-Kommando, SET GLOBALS- (nur im Reporting Mode) oder FORMAT-Statement gesetzten Parameter.

Werden mehrere Parameter angegeben, müssen sie jeweils durch ein oder mehrere Leerzeichen voneinander getrennt werden. Die Angabe eines Parameters darf sich nicht über zwei Quellcode-Zeilen erstrecken.

Siehe auch:

Ausgabeattribute

attributes dient dazu, den ausgegebenen Feldern/Textelementen Anzeige- und Farbattribute zuzuordnen. Sie können die folgenden Attribute angeben:

AD=AD-value
BX=BX-value
CD=CD-value
PM=PM-value

AD-value
CD-value

Die möglichen Parameterwerte sind in den folgenden Abschnitten der Parameter-Referenz aufgeführt:

Anmerkung:
Der Compiler akzeptiert mehr als einen Attributwert für ein Ausgabefeld. Beispielsweise können Sie angeben: AD=BDI. In einem solchen Fall gilt allerdings nur der letzte Wert. In dem vorliegenden Beispiel greift nur der Wert I, und das Ausgabefeld wird intensiviert dargestellt.

Beispiel

Beispiel 1 — PRINT-Statement

** Example 'PRTEX1': PRINT                                              
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 NAME                                                                
  2 FIRST-NAME                                                          
  2 CITY                                                                
  2 JOB-TITLE                                                           
  2 ADDRESS-LINE (2)                                                    
END-DEFINE                                                              
*                                                                       
LIMIT 1                                                                 
READ EMPLOY-VIEW BY CITY                                                
  /*                                                                    
  WRITE NOTITLE 'EXAMPLE 1:'                                            
             // 'RESULT OF WRITE STATEMENT:'                            
  WRITE       /  NAME  ',' FIRST-NAME ':' JOB-TITLE '*' (30)            
  WRITE       / 'RESULT OF PRINT STATEMENT:'                            
  PRINT       /  NAME  ',' FIRST-NAME ':' JOB-TITLE '*' (30)      
  /*                                        
  WRITE      // 'EXAMPLE 2:'                
             // 'RESULT OF WRITE STATEMENT:'
  WRITE       /  NAME 60X ADDRESS-LINE (1:2)
  WRITE       / 'RESULT OF PRINT STATEMENT:'
  PRINT       /  NAME 60X ADDRESS-LINE (1:2)
  /*                                        
END-READ                                    
END                                        

Ausgabe des Programms PRTXEX1:

EXAMPLE 1:                                                                    
                                                                              
RESULT OF WRITE STATEMENT:                                                    
                                                                              
SENKO                , WILLIE               : PROGRAMMER                      
******************************                                                
                                                                              
RESULT OF PRINT STATEMENT:                                                    
                                                                              
SENKO , WILLIE : PROGRAMMER ******************************                    
                                                                              
                                                                              
EXAMPLE 2:                                                                    
                                                                              
RESULT OF WRITE STATEMENT:                                                    
                                                                              
SENKO                                                                         
2200 COLUMBIA PIKE    #914                                                    
                                                                              
RESULT OF PRINT STATEMENT:                                                    
                                                                              
SENKO                                                            2200 COLUMBIA
PIKE  #914                                                                   

Beispiel 2 — PRINT-Statement mit auf den PC herunterzuladendem Report

** Example 'PCPIEX1': PRINT to PC                                       
**                                                                      
** NOTE: Example requires that Natural Connection is installed.         
************************************************************************
DEFINE DATA LOCAL                                                       
01 PERS VIEW OF EMPLOYEES                                               
  02 PERSONNEL-ID                                                       
  02 NAME                                                               
  02 CITY                                                               
END-DEFINE                                                              
*                                                                       
FIND PERS WITH CITY = 'NEW YORK'                 /* Data selection      
  PRINT (7) 5T CITY 20T NAME 40T PERSONNEL-ID    /* (7) designates      
                                                 /* the output file    
                                                 /* (here the PC).      
END-FIND                                                                
END