COMPOSE

Dieses Statement kann nur verwendet werden, wenn das Bürosystem Con-nect und das Textformatierungssystem Con-form installiert sind.

COMPOSE
   [RESETTING-clause]
   [MOVING-clause]
   [ASSIGNING-clause]
   [FORMATTING-clause]
   [EXTRACTING-clause]

Wenn Sie mehr als eine Klausel (clause) angeben, werden diese in der oben abgebildeten Reihenfolge verarbeitet.

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.


Funktion

Mit dem Statement COMPOSE können Sie die Textformatierung durch Con-form (das von Con-nect verwendete Textformatiersystem) direkt von einem Natural-Programm aus auslösen.

Der zu formatierende Text kann entweder mittels Variablen zur Verfügung gestellt werden oder aus einem Con-nect-Textblock (einem Dokument, das Con-form-Formatierbefehle enthält) abgerufen werden.

Die Inhalte von Natural-Variablen können als Variablen an Con-form übergeben werden und dynamisch in den formatierten Text eingefügt werden.

Die Werte einer Con-form-Variablen können auch vom Textformatiersystem wieder an das Natural-Programm übergeben werden.

Wenn die Con-form-Anweisungen ausgeführt worden sind (d.h. wenn ein formatiertes Dokument erstellt wurde), wird die Ausgabe an eines der folgenden Ziele geleitet:

  • einen Natural-Report,

  • ein Dokument in der Con-nect-Systemdatei,

  • Variablen in dem Natural-Programm, welches das COMPOSE-Statement ausführt,

  • ein Nicht-Natural-Programm.

Syntax-Beschreibung

RESETTING-Klausel

Mit dieser Klausel können Sie Informationen aus dem Textformatierbereich des Con-form-Buffer löschen und Speicherplatz im Con-form-Buffer freigeben, welcher mit dem Profilparameter CSIZE im Natural-Parametermodul zugewiesen wird.

RESETTING

DATAAREA
TEXTAREA
MACROAREA
ALL

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
DATAAREA Löscht alle aktiven Textvariablen.
TEXTAREA Löscht alle Texteingabedaten.

Anmerkung:
Aus Kompatibilitätsgründen bezieht sich das Wort TEXTAREA auf DATAAREA, so wie es in der MOVING-Klausel verwendet wird.

MACROAREA Löscht alle Textmakros.
ALL Löscht alle aktiven Textvariablen, Texteingabedaten und Textmakros.

Siehe auch Beispiel 1 und Beispiel 2.

MOVING-Klausel

Mit dieser Klausel können Sie Textzeilen in den Textformatierbereich des Con-form-Buffer oder direkt in das Formatierungssystem übertragen und die formatierte Textausgabe vom Con-form-Buffer abrufen.

Mit dieser Klausel können ein oder mehrere Textwerte in den Textformatierbereich übertragen werden (siehe Syntax 1). Dieser Bereich kann als Eingabequelle für Formatieroperationen verwendet werden.

Wartet das Textformatierungssystem gerade auf Eingaben (siehe Verarbeitung im Dialog-Modus), wird der Text direkt an es übergeben, ohne im Con-form-Buffer zwischengespeichert zu werden (siehe Syntax 1 und Syntax 2). Die Source-Eingabe wird mit der LAST-Option beendet.

Wartet der formatierte Text gerade darauf, ausgegeben zu werden (siehe Verarbeitung im Dialog-Modus), dann dient Syntax 3 der MOVING-Klausel dazu, die Kontrolle vom Natural-Programm wieder an das Textformatierungssystem zu übergeben.

Zur Beschreibung der Statusvariablen siehe FORMATTING-Klausel.

Je nach Status der Dialog-Modus-Verarbeitung können Sie eine der folgenden Formen der MOVING-Klausel verwenden:

Syntax 1 - Dialogmodus für Eingabe

Syntax 1 der MOVING-Klausel gilt, wenn die Formatierung noch nicht begonnen hat oder das Textformatierungssystem im Dialog-Modus für Eingabe ist und auf Eingabedaten wartet (TERM in der Statusvariablen "State").

MOVING [operand1] 37   [TO DATAAREA] [LAST
[STATUS [TOoperand2  [operand3 [operand4  [operand5]]]]

Syntax 2 - Dialogmodus für Ein- und Ausgabe

Syntax 2 der MOVING-Klausel gilt, wenn das Textformatierungssystem im Dialog-Modus für Ein- und Ausgabe ist und auf weitere Eingabedaten wartet (Status TERM in der Statusvariablen "State"). In diesem Modus akzeptiert der Formatierer jeweils nur eine Eingabezeile.

Der Ausführungskontext kann sich zwischen einer Reihe ausgeführter COMPOSE-Statements ändern. Daher müssen die Ausgabevariablen erneut angegeben werden, selbst wenn der Formatierer auf Eingabedaten wartet.

MOVING

operand1  [TO DATAAREA]

[OUTPUT] TO VARIABLES operand6 20
  LAST
[STATUS [TO]   operand2  [operand3  [operand4  [operand5]]]]

Syntax 3 - Dialogmodus für Ausgabe

Syntax 3 der MOVING-Klausel gilt, wenn das Textformatierungssystem im Dialog-Modus für Ausgabe (und möglicherweise gleichzeitig für Eingabe) ist und die Ausgabe an das Natural-Programm übergibt (Status STRG in der Statusvariablen "State").

MOVING OUTPUT   [TO VARIABLES] operand6 20
[STATUS [TO]   operand2 [operand3  [operand4 [operand5]]]]

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S A     A N P                   ja nein
operand2   S       A                       ja ja
operand3   S                 B             ja ja
operand4   S                 B             ja ja
operand5   S                 B             ja ja
operand6   S A     A                       ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1 Enthält die (unformatierten) Eingabe-Textzeilen.

Format/Länge: (An), dabei ist n maximal 253; (Nn) oder (Pn), dabei ist n maximal 29

operand2 Enthält die Statusvariable "State" (Status der Formatierung).

Format/Länge: (A4)

operand3 Enthält die Statusvariable "Position" (Seitenzahl).

Format/Länge: (B4)

operand4 Enthält die Statusvariable "Position" (Zeilennummer).

Format/Länge: (B4)

operand5 Enthält die Statusvariable "Amount of Output Data" (Menge der Ausgabedaten, d.h. Anzahl der Zeilen).

Format/Länge: (B4)

operand6 Enthält die (formatierten) Ausgabe-Textzeilen.

Format/Länge: (An), dabei ist n maximal 253

ASSIGNING-Klausel

Mit dieser Klausel können Sie Werte von Natural-Variablen zu Con-form-Textvariablen zuweisen. Anschließende Formatiervorgänge können sich auf diese Textvariablen beziehen.

ASSIGNING [TEXTVARIABLE] {operand1=operand2}, 19

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S       A                       ja nein
operand2 C S       A N P                   ja ja

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1 operand1 ist der Name der Con-form-Textvariablen.

Die Namen der Textvariablen müssen in Großbuchstaben angegeben werden.

Format/Länge: (An), dabei ist n maximal 253

operand2 operand2 ist der Name einer gegebenen Natural-Variablen.

Format/Länge: (An), dabei ist n maximal 253; (Nn) oder (Pn), dabei ist n maximal 29

Siehe auch Beispiel 3 und Beispiel 4.

FORMATTING-Klausel

Mit dieser Klausel können Sie Con-form dazu veranlassen, eine formatierte Ausgabe zu erzeugen. Diese Klausel dient dazu, Text in der endgültig formatierten Form zu erstellen, d.h. mit korrekten Zeilen- und Seitenumbrüchen, unter Verwendung von Eingabedaten, die aus einer Kombination von Text und Con-form-Statements bestehen können.

Die Formatier-Optionen werden in einer oder mehreren Subklauseln (subclauses) angegeben. Falls keine Subklauseln angegeben werden, nimmt Con-form die gültigen Standard-Formatieroptionen.

Die Statusvariable wird im Dialog-Modus verwendet.

FORMATTING

OUTPUT-subclause
INPUT-subclause
STATUS-subclause
PROFILE-subclause
MESSAGES-subclause
ERRORS-subclause
ENDING-subclause
STARTING-subclause

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
OUTPUT-subclause Das Ausgabemedium. Dies kann ein Natural-Report, ein Dokument in einem Con-nect-Büro, eine oder mehrere Natural-Variablen (oder ein Array von Natural-Variablen) oder ein Nicht-Natural-Programm sein.

Siehe Output-Subklausel.

INPUT-subclause Das Eingabemedium. Dies kann ein Con-nect-Dokument, sowie auch der Textformatierbereich des Con-form-Buffer (siehe DATAAREA in der MOVING-Klausel), die Umgebung des Natural-Programms (auch mehrere), welches die COMPOSE-Statements ausführt (siehe auch MOVING-Klausel), ein Nicht-Natural-Programm oder eine Kombination dieser vier Möglichkeiten sein.
STATUS-subclause

Der Status des Formatiervorgangs. Der Formatiervorgang kann die mehrfache Ausführung eines COMPOSE-Statements umfassen (bei Verarbeitung im Dialog-Modus). Zum Beispiel wird die Eingabe von einem Natural-Programm in den Textformatierbereich gestellt, und die Ausgabe wird vom Textformatierbereich an die Umgebung eines Natural-Programms (d.h. an eine oder mehrere Natural-Variablen) übergeben. Deshalb muss das Natural-Programm über den Status der Formatierung informiert werden.

Folgende Variablen werden während der Formatierung an das Natural-Programm übergeben:

State Status:
TERM − wenn der Dialog-Modus für die Eingabe bereit ist.
STRG − wenn der Dialog-Modus für die Ausgabe bereit ist.
END − wenn die Formatierung erfolgreich beendet wurde.
ENDX − wenn die Formatierung nicht erfolgreich beendet wurde.
Position Seiten- und Zeilennummer des Dokuments, das gerade formatiert wird. Diese Angaben werden in zwei separaten Variablen (Seitenposition und Zeilenposition) gehalten.
Amount of Output Data Die Anzahl formatierter Ausgabezeilen, die an das Natural- Programm übergeben werden. Der Formatierer benutzt diese Zahl als Zeiger auf die nächste zu füllende Ausgabevariable. Der Wert erhöht sich um 1, bevor die Ausgabezeile ausgegeben wird. Liegt der aktuelle Wert außerhalb des Bereichs, wird der Wert auf 1 gesetzt.
PROFILE-subclause Der Textblock, der vor den Eingaben verarbeitet wird.

Siehe PROFILE-Subklausel.

MESSAGES-subclause Steuert die Ausgabe von Warnmeldungen und statistischen Informationen und die Fehlerverarbeitung.

Siehe MESSAGES-Subklausel und ERRORS-Subklausel.

ERRORS-subclause
ENDING-subclause Dient zur Festlegung der Seite, bis zu der die Ausgabe des formatierten Textes erfolgen soll.

Siehe ENDING-Subklausel.

STARTING-subclause Dient zur Festlegung der Seite, ab der die Ausgabe des formatierten Textes erfolgen soll.

Siehe STARTING-Subklausel.

OUTPUT-Subklausel

Mit dieser Subklausel können Sie den formatierten Con-form-Text an eine bestimmte Ausgabestelle schicken.

Wird diese Subklausel weggelassen, dann wird die Ausgabe standardmäßig an den Natural-Hauptdrucker geschickt.

OUTPUT

(rep)
SUPPRESSED
CALLING operand1
TO VARIABLES [CONTROL operand2 operand3] operand4 20
DOCUMENT-option

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S       A                       ja nein
operand2 C S       A                       ja nein
operand3 C S       A                       ja nein
operand4   S A     A                       ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
OUTPUT (rep)

Wenn die Ausgabe an einen Drucker geschickt wird (d.h. wenn die Reportnummer nicht 0 ist) und ein Con-nect-Druckerprofil (mit der Con-nect-API-Funktion Z-DRIVER) geladen wurde, werden die Optionen zur Hervorhebung von Teilen des formatierten Ausgabetexts über die Einstellungen in diesem Profil gesteuert.

Wenn ein Druckerprofil aktiv ist und keine logische Seitenvorschubsteuerung angegeben wurde, werden Seitenvorschübe über die entsprechenden internen Natural-Nukleusfunktionen eingefügt.

Weitere Texthervorhebungsoptionen, die im gerade aktiven Con-nect-Druckerprofil nicht definiert sind, werden ignoriert.

Anmerkung:
Bei der Ausführung eines COMPOSE RESETTING ALL-Statements oder eines COMPOSE FORMATTING-Statements, bei dem die Ausgabe nicht an einen Report geschickt wird, wird ein Druckerprofil aus dem Textformatierbereich entladen.

Wird die Ausgabe an Report 0 geschickt oder ist kein Druckerprofil aktiv, übergibt Con-nect die Verantwortung für die Ausgabeverarbeitung an die Natural-Nukleus-Routinen. In diesem Falle werden nur die Texthervorhebungsoptionen Fettdruck, Unterstreichung und Kursivschrift berücksichtigt.

Anmerkung:
Ein Report, der in einem Statement DEFINE PRINTER (n) OUTPUT 'CONNECT' referenziert wird, darf nicht als Ausgabeziel in einem COMPOSE FORMATTING-Statement angegeben werden.

OUTPUT SUPPRESSED Mit dieser Option können Sie die Ausgabe unterdrücken.
OUTPUT CALLING operand1 operand1 ist der Name des Programms, das aufgerufen wird.

Format/Länge: (An), dabei ist n maximal 8

Siehe Abschnitt Eingabe-/Ausgabe-Verarbeitung durch Nicht-Natural-Programme.

OUTPUT TO VARIABLES [CONTROL operand2 operand3] operand4

Normalerweise wird der formatierte Text in seiner endgültigen Form an ein Array von Natural-Variablen übergeben. Jede Zeile füllt eine Variable (wenn eine Zeile nicht ganz in eine Variable passt, wird sie abgeschnitten). Texthervorhebungsoptionen werden ignoriert, mit Ausnahme angegebener CONTROL-Variablen, die dazu dienen, Textteile hervorzuheben (d.h. fett oder unterstrichen auszugeben).

Wenn die CONTROL-Variablen I und N angegeben werden, wird formatierter Text in einem Zwischenformat erzeugt (d.h. durchsetzt mit logischen Steuersequenzen).

operand2 ist das Anfang-Zeichen. Format/Länge: (A1).

operand3 ist das Ende-Zeichen. Format/Länge: (A1).

Beispiel mit spitzen Klammern als Anfang- und Ende-Zeichen:

<ABC...XYZ>

operand4 ist das Ausgabefeld. Format/Länge: (An), dabei ist n maximal 253

Weitere Informationen siehe Abschnitt Verarbeitung im Dialog-Modus und speziell Abschnitt Dialog-Modus für Ausgabe.

OUTPUT DOCUMENT-option Siehe DOCUMENT-Option.

DOCUMENT-Option

Mit der DOCUMENT-Option der OUTPUT-Subklausel können Sie den formatierten Text von Con-form in fertig formatierter Form (Txt) oder im Zwischenformat (Int) an ein Con-nect-Büro schicken. Der Text im Zwischenformat (Int) kann nicht verändert werden.

DOCUMENT

INTO

FINAL
INTERMEDIATE

[CABINET] operand1 [PASSW=operand2]

  [GIVING]

operand3 [operand4]
operand4 [operand3]

 

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S       A                       ja nein
operand2   S       A                       ja nein
operand3   S                 B             ja ja
operand4   S                 B             ja ja

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
DOCUMENT INTO FINAL | INTERMEDIATE CABINET Wenn Sie das Schlüsselwort FINAL angeben, wird das Dokument in fertig formatierter Form erstellt. In diesem Fall werden spezifische Texthervorhebungsoptionen, z.B. Fettdruck oder Kursivschrift) ignoriert

Wenn Sie das Schlüsselwort INTERMEDIATE angeben, wird das Dokument ohne Namen in das Fach COMPOSE gestellt. In der Beschreibungszeile steht der Name des Programms, welches das COMPOSE FORMATTING-Statement ausgeführt hat, sowie Datum und Uhrzeit der Ausführung.

CABINET operand1 Für operand1 können Sie ein spezielles Büro angeben.

Format/Länge: (An), dabei ist n maximal 8

Wenn Sie operand1 nicht benutzen, wird das Dokument in das aktuelle Benutzerbüro gestellt (d.h. das Büro, dessen ID der des gerade aktiven Natural-Benutzers entspricht).

Con-form erzwingt, dass Con-nect-Zugriffsbeschränkungen eingehalten werden, und akzeptiert nur Büro-IDs, die in Con-nect definiert sind.

Anmerkung:
Büro-IDs müssen in Großbuchstaben angegeben werden.

PASSW=operand2 Ein Passwort müssen Sie dann angeben, wenn Sie ein Dokument in einem Büro speichern wollen, auf das Sie als angenommener aktueller Benutzer keinen Zugriff haben.

Format/Länge: (An), dabei ist n maximal 8

operand3 operand3 wird vom Textformatierungssystem verwendet, um einen eindeutigen Schlüssel vom Dokument an das Natural-Programm zurückzugeben. Er wird nur aus Kompatibilitätsgründen unterstützt.

Format/Länge: (B10)

operand4 operand4 wird vom Textformatierungssystem verwendet, um eine ISN, die auf das formatierte Ausgabedokument zeigt, an das Natural-Programm zurückzugeben. Diese ISN kann bei der Referenzierung eines Dokuments in aufeinanderfolgenden Aufrufen von Con-nect-APIs nützlich sein.

Format/Länge: (B4)

INPUT-Subklausel

Mit dieser Subklausel können Sie angeben, woher die Eingaben für das Textformatierungssystem kommen..

Anmerkungen:

  1. Ohne diese Subklausel wird standardmäßig DATAAREA (Textformatierbereich von Con-form) verarbeitet.
INPUT

DATAAREA

FROM

EXIT operand2 9

CABINET operand2 [PASSW=operand3]
operand1 FROM

EXIT operand2 10  
CABINET operand2 [PASSW=operand3]

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S       A                       ja nein
operand2 C S       A                       ja nein
operand3   S       A                       ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
DATAAREA Die Eingaben können aus dem Textformatierbereich kommen (eine Kombination aus Text aus dem Textformatierbereich und aus dem Dialog-Modus ist ebenfalls möglich), der mit einer oder mehreren MOVING-Operationen gefüllt werden muss.

SieheMOVING-Klausel.

operand1 Alternativ können die Eingaben auch von einem Textblock genommen werden. Der Name des Textblocks wird mit operand1 angegeben.

Anmerkung:
Textblock-IDs müssen in Großbuchstaben angegeben werden.

Format/Länge: (An), dabei ist n maximal 253

Der Textblock kann in einem Con-nect-Büro enthalten sein oder über ein Nicht-Natural-Programm zur Verfügung gestellt werden. Beim Aufrufen eines solchen Programms gelten die für das CALL-Statement gültigen Konventionen. Es kann eine Hierarchie von Con-nect-Büros oder Nicht-Natural-Programmen angegeben werden, von denen jede nacheinander nach dem in operand1 benannten Textblock abgesucht wird.

CABINET operand2 Die Eingaben (ein mit operand1 angegebener Textblock) können aus einem bestimmten Con-nect-Büro entmommen werden.

operand2 ist der Name des Con-nect-Büros.

Anmerkung:
Büro-IDs müssen in Großbuchstaben angegeben werden.

Format/Länge: (An), dabei ist n maximal 8

EXIT operand2 operand2 ist der Name des Exit.

Format/Länge: (An), dabei ist n maximal 8

PASSW=operand3 Ein Passwort muss angegeben werden, wenn ein Dokument in einem Büro gespeichert wird, auf das unter der aktuellen Benutzerkennung kein Zugriff erlaubt ist.

Format/Länge: (An), dabei ist n maximal 8

Con-form erzwingt, dass Con-nect-Zugriffsbeschränkungen eingehalten werden, und akzeptiert nur Büro-IDs, die in Con-nect definiert sind.

Siehe auch Beispiel 4.

STATUS-Subklausel

Die in der FORMATTING-Klausel verwendete STATUS-Subklausel entspricht der STATUS-Subklausel, die in der MOVING-Klausel vorhanden ist. Sie sollten sie verwenden, um sicherzustellen, dass das der Formatierungsvorgang immer den passenden Status für den gegebenen Verarbeitungsschritt hat.

[STATUS operand1 [operand2 [operand3 [operand4]]]]

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
Operand1   S       A                       ja nein
Operand2   S                 B             ja nein
Operand3   S                 B             ja nein
Operand4   S                 B             ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1 Enthält die Statusvariable "State" (Status der Formatierung).

Format/Länge: (A4)

operand2 Enthält die Statusvariable "Position" (Seitenzahl).

Format/Länge: (B4)

operand3 Enthält die Statusvariable "Position" (Zeilennummer).

Format/Länge: (B4)

operand4 Enthält die Statusvariable "Amount of Output Data" (Menge der Ausgabedaten, d.h. Anzahl der Zeilen).

Format/Länge: (B4)

PROFILE-Subklausel

Diese Subklausel bewirkt, dass der Inhalt des angegebenen Textblocks verarbeitet wird, bevor in der INPUT-Subklausel angegebene Eingaben verarbeitet werden (standardmäßig wird ein Textblock nicht als Profil verarbeitet).

PROFILE   operand1 

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S       A                       ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1 operand1 ist der Name des Textblocks(z.B. FPROFILE - Formatierungsprofil).

Format/Länge: (An), dabei ist n maximal 32

MESSAGES-Subklausel

Mit dieser Subklausel können Sie bestimmen, ob bei Beendigung der Formatierung die Ausgabe von Warnmeldungen und statistische Informationen erfolgt oder die Ausgabe unterdrückt wird (der Fehler wird ignoriert).

MESSAGES

[LISTED] [ON] (rep)
SUPPRESSED

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
(rep) Mit der (rep)-Notation geben Sie den Report an, für den die MESSAGES-Subklausel gültig ist.

Sie können einen Wert im Bereich von 0 - 31 angeben. Der Wert für (rep) kann auch ein logischer Name sein, der mittels des DEFINE PRINTER-Statements zugewiesen wurde

Wie Sie das Format eines mit Natural erstellten Report steuern können ist im Abschnitt Steuerung der Ausgabe von Daten im Leitfaden zur Programmierung beschrieben.

SUPPRESSED Wenn Sie das Schlüsselwort SUPPRESSED angeben, werden keine Meldungen ausgegeben und Fehler werden ignoriert.

ERRORS-Subklausel

Mit dieser Subklausel können Sie bestimmen, was im Falle eines Formatierungsfehlers geschehen soll. Der Fehler kann von einer Natural-Standard-Fehlerroutine verarbeitet oder in einem bestimmten Natural-Report (rep) aufgelistet werden.

ERRORS

[LISTED] [ON] (rep)
INTERCEPTED

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
(rep) Mit der (rep)-Notation geben Sie den Report an, für den die ERRORS-Subklausel gültig ist.

Sie können einen Wert im Bereich von 0 - 31 angeben. Der Wert für (rep) kann auch ein logischer Name sein, der mittels des DEFINE PRINTER-Statements zugewiesen wurde

Wie Sie das Format eines mit Natural erstellten Report steuern können ist im Abschnitt Steuerung der Ausgabe von Daten im Leitfaden zur Programmierung beschrieben.

INTERCEPTED Durch Angabe des Schlüsselwortes INTERCEPTED veranlassen Sie, dass Fehler durch die Standard-Fehlerroutine von Natural verarbeitet werden.

Anmerkung:
Fehler und Meldungen schließen einander aus. Bei manchen Fehlern wird die Natural-Fehlerroutine aufgerufen, selbst wenn eine andere Option angegeben wurde. Fehler und Meldungen dürfen nicht an einen Report geschickt werden, der über das Statement DEFINE PRINTER (n) OUTPUT 'CONNECT' an Con-nect geleitet wird.

ENDING-Subklausel

Diese Subklausel bewirkt, dass die Ausgabe des formatierten Textes nach einer bestimmten Seite (Seitennummer) unterdrückt wird bzw. die Ausgabe sich auf eine festgelegte Anzahl von Seiten beschränken soll.

ENDING

[AT] [PAGE] operand1
AFTER operand1 [PAGES]

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S         N P                   ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
ENDING [AT] [PAGE] operand1 Bewirkt, dass die Ausgabe des formatierten Textes nach einer bestimmten Seite unterdrückt wird. Die Angabe dieser Seite erfolgt in operand1.

Format/Länge: (Nn) oder (Pn), dabei ist n maximal 5

ENDING AFTER operand1 [PAGES] Gibt an, dass die Ausgabe sich auf eine in operand1 festgelegte Anzahl von Seiten beschränken soll.

STARTING-Subklausel

Die Subklausel bewirkt, dass die Ausgabe des formatierten Textes solange unterdrückt wird, bis die angegebene Seite erreicht ist.

STARTING [FROM] [PAGE] operand1

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S         N P                   ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1 Die Ausgabe des formatierten Textes wird solange unterdrückt wird, bis die in operand1 angegebene Seite erreicht ist.

Format/Länge: (Nn) oder (Pn), dabei ist n maximal 5

EXTRACTING-Klausel

Mit dieser Klausel können Sie Natural-Variablen die Werte von Con-form-Textvariablen zuweisen. Die aktuellen Textvariablenwerte können das Ergebnis von vorhergehenden Formatiervorgängen sein.

EXTRACTING [TEXTVARIABLE] {operand1=operand2}, 19

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1   S       A N P                   ja ja
operand2 C S       A                       ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1 operand1 ist der Name einer gegebenen Natural-Variablen.

Format/Länge: (An), dabei ist n maximal 253; (N) oder (Pn), dabei ist n maximal 29

operand2 operand2 ist der Name einer Con-form-Textvariablen. Der Name muss in Großbuchstaben angegeben werden.

Format/Länge: (An), dabei ist n maximal 253

Siehe auch Beispiel 6.

Der Formatiervorgang

Der Formatiervorgang beginnt, wenn die FORMATTING-Klausel des COMPOSE-Statements ausgeführt wird (unter Umständen auch dann, wenn bei beabsichtigter Texteingabe durch die MOVING-Klausel noch keine solche Eingabe vorliegt). Solange der Formatiervorgang aktiv ist, werden Texteingaben, die aus der Ausführung des COMPOSE MOVING-Statements resultieren, direkt zur Formatierung übertragen (und können in späteren Formatiervorgängen nicht wiederverwendet werden). Ist der Formatiervorgang nicht aktiv, werden Texteingaben im Textformatierbereich des Con-form-Buffer zwischengespeichert. Dadurch ist es möglich, die Eingabe für mehrere Formatiervorgänge wiederzuverwenden.

Da der Con-form-Buffer am Ende des Natural-Programms nicht gelöscht wird, brauchen die betreffenden COMPOSE-Statements nicht alle in demselben Natural-Programm zu stehen; sie können auch in mehreren nacheinander aufgerufenen Programmen stehen.

Die Ausführung einer RESETTING- oder FORMATTING-Klausel oder das Auftreten eines schwerwiegenden Formatierfehlers beenden den aktiven Formatierdurchlauf.

Das Ende der Eingabedaten wird durch die LAST-Subklausel der MOVING-Klausel bestimmt.

Wenn ein Con-nect-Dokument als Eingabequelle verwendet wird, wird davon ausgegangen, dass das Ende der Eingabedaten am Ende des Dokuments erreicht ist.

Anmerkung:
Es empfiehlt sich, die STATUS-Subklausel der FORMATTING- bzw. MOVING-Klausel zu verwenden, um sicherzustellen, dass sich der Formatiervorgang jeweils im richtigen Status für den betreffenden Verarbeitungsschritt befindet.

Verarbeitung im Dialog-Modus

Bei der Verarbeitung im Dialog-Modus erfolgt eine Reihe von Interaktionen zwischen dem Benutzerprogramm und dem Textformatierungssystem, die während der Formatierung der Eingabe und der Erzeugung der Ausgabe stattfinden.

Der Dialog-Modus erlaubt es dem Benutzerprogramm, auf jeder Stufe der Eingabehierarchie dem Textformatierungssystem Rohtext als Eingabe zu liefern. In diesem Modus werden auch formatierte Ausgaben direkt aus der aktuellen Programmumgebung angenommen.

Der Dialog kommt dadurch zustande, dass der Formatiervorgang in eine Reihe von Schritten unterteilt wird, von denen jeder einzelne durch ein eigenes COMPOSE-Statement aufgerufen wird:

Dialog-Modus für Eingabe

Der Dialog-Modus für Eingabe wird aktiviert, wenn DATAAREA (Textformatierbereich) die Quelle des Eingabetextes ist, oder wenn die Con-form-Anweisung .TE ON auftaucht, und der Textformatierbereich keinen weiteren zu verarbeitenden Text mehr enthält. Der Dialog-Modus für Eingabe wird durch das Wort TERM in der Statusvariablen "State" angezeigt.

Das Benutzerprogramm sollte daraufhin die erforderlichen Eingaben liefern, indem es die MOVING-Klausel eines anschließend verarbeiteten COMPOSE-Statements aufruft. Das Benutzerprogramm kann die Terminaleingaben beenden, indem es die LAST-Option der MOVING-Klausel oder die Formatieranweisung .TE OFF verwendet, falls der Dialog-Modus durch .TE ON begonnen wurde, und zwar als Text mittels der MOVING-Klausel. Das Ende der Formatierung wird durch END (bzw. ENDX im Falle eines Fehlers) in der Statusvariablen "State" angezeigt.

Siehe auch Beispiel 7.

Dialog-Modus für Ausgabe

Der Dialog-Modus für Ausgabe wird aktiviert, wenn das Ausgabeziel TO VARIABLES ist. Das Textformatierungssystem gibt die Kontrolle an das Natural-Programm zurück, sobald die angegebenen Natural-Variablen gefüllt sind oder ein Seitenende erreicht ist (je nachdem, was zuerst der Fall ist). Der Dialog-Modus für Ausgabe wird durch STRG in der STATUS-Variablen "State" angezeigt.

Das Benutzerprogramm sollte daraufhin die soeben in die Natural-Variablen gestellte formatierte Ausgabe übernehmen und einen weiteren Satz Natural-Variablen als Ausgabeziel in einem anschließend verarbeiteten COMPOSE MOVING-Statement bereitstellen. Das Ende der Formatierung wird durch END (bzw. ENDX im Falle eines Fehlers) in der Statusvariablen "State" angezeigt.

Anmerkung:
Bei Verwendung des Dialog-Modus (siehe INPUT- und OUTPUT-Subklauseln) erstreckt sich der Formatiervorgang in der Regel über mehrere Ausführungen eines COMPOSE-Statements.

Dialog-Modus für Ein- und Ausgabe

Der Dialog-Modus kann auch für kombinierte Ein- und Ausgabeverarbeitung verwendet werden. Wenn das Textformatierungssystem weitere Eingabedaten anfordert (angezeigt durch den Status TERM in der Statusvariablen "State") oder eine Ausgabe erzeugt hat (angezeigt durch den Status STRG), muss das Natural-Programm entsprechend reagieren.

Im Dialog-Modus für kombinierte Ein- und Ausgabeverarbeitung kann das Textformatierungssystem jeweils nur eine Eingabezeile annehmen. Lediglich im reinen Eingabe-Modus kann es mehrere Zeilen gleichzeitig annehmen.

Ausführung von COMPOSE-Statements im Dialog-Modus

Wie bereits erwähnt, wird der Dialog-Modus über ein COMPOSE FORMATTING-Statement aktiviert, welches eine Reihe von COMPOSE MOVING-Ausführungen umfasst. Beachten Sie dabei bitte folgendes:

Eingabe-/Ausgabe-Verarbeitung durch Nicht-Natural-Programme

In Abhängigkeit von den in der FORMATTING-Klausel angegebenen Parametern ist es möglich, Ein- und Ausgaben mit Nicht-Natural-Programmen zu verarbeiten. Solche Programme werden über den gleichen Mechanismus wie beim Natural-CALL-Statement aufgerufen.

Das COMPOSE-Statement tauscht mit diesen Programmen Parameter aus, und zwar unter Verwendung von Standard-Linkage-Konventionen (dynamisches Laden ist in einer CICS-Umgebung nicht möglich).

Anmerkung:
Verarbeitung der Ein-/Ausgaben durch Nicht-Natural-Programme ist nur auf Großrechnern möglich; auf anderen Plattformen werden die entsprechenden Teile des COMPOSE-Statements ignoriert.

In Abhängigkeit vom Status des Formatiervorgangs werden zwei oder drei Parameter zwischen dem Formatierer und den Nicht-Natural-Programmen übergeben.

Parameter 1 (Format/Länge A1) Der Funktionscode wird vom Formatierer an Nicht-Natural-Programme übergeben.

Mögliche Werte:

I Initiieren (Eingabe, Ausgabe)
O Dokument öffnen (Eingabe)
R Eine Zeile des Dokuments lesen (Eingabe)
W Eine Ausgabezeile schreiben (Ausgabe)
C Dokument schließen (Eingabe)
T Beenden (Eingabe, Ausgabe).
Parameter 2 (Format/Länge B1)

Der Response Code wird von Nicht-Natural-Programmen an das Formatierungssystem übergeben.

Mögliche Werte:

X'00' Funktion erfolgreich ausgeführt.
X'01' Bei Funktion O: Dokument nicht gefunden.
Bei Funktion R: Ende des Dokuments erreicht.
X'FF' Funktion nicht beendet.
Parameter 3 (Format A1/256) Bei den Funktionen O und W werden diese Parameter vom Formatierungssystem an Nicht-Natural-Programme übergeben.

Dagegen werden Parameter von der Funktion R von Nicht-Natural-Programmen an das Formatierungssystem übergeben.

Bytes 1 - 2 Geben die Länge n dieses Parameters an.
Bytes 3 - 4 Leer.
Bytes 5 - n Funktion O: Name des Dokuments.
Funktion R: Vom Nicht-Natural-Programm gelesene Zeile.
Funktion W: Ausgabezeile vom Formatierer.

Ist ein Seitenvorschub erforderlich, steht vor der Ausgabe ein N, andernfalls eine 1.

Angaben zur Hervorhebung von Text (z.B. Fettdruck oder Kursivschrift) werden ignoriert, wenn die Ausgabe an ein Nicht-Natural-Programm übergeben wird.

Beispiele

Beispiel 1

Das folgende COMPOSE-Statement bewirkt, dass der formatierte Text des im Con-nect-Büro TLIB gespeicherten Textblocks TEXT auf Report 1 ausgegeben wird. Fehler und statistische Angaben werden auf Report 0 (dem Standarddrucker) ausgegeben.

COMPOSE RESETTING ALL
        FORMATTING INPUT 'TEXT' FROM CABINET 'TLIB'  
        OUTPUT (1)
        MESSAGES LISTED ON (0)

Beispiel 2

Die folgenden COMPOSE-Statements bewirken eine formatierte Textausgabe an Report 0 (Standarddrucker).

COMPOSE RESETTING ALL
COMPOSE MOVING '.FI ON' 'This is an example'
COMPOSE MOVING 'for use of Con-form from'
               'within Natural applications' LAST   
COMPOSE FORMATTING

Beispiel 3

Das folgende COMPOSE-Statement bewirkt die Zuordnung von Werten zu den Con-form-Textvariablen &VAR1 und &VAR2 in einer Con-nect-Prozedur.

COMPOSE ASSIGNING 'VAR1' = 'Text1', 'VAR2' = 540  

Beispiel 4

Textblock XYZ in Büro XYLIB:

.FI ON
Dear Mr &name.,
.IL
I am pleased to invite you to a presentation of our new product &prod..  

Natural-Programm:

...
INPUT #NAME (A32) #PROD (A32)
COMPOSE ASSIGNING 'NAME' = #NAME, 'PROD' = #PROD
        FORMATTING INPUT 'XYZ' FROM CABINET 'XYLIB'   
        OUTPUT (1) MESSAGES SUPPRESSED
...

Vom Programm erzeugte Eingabe-Map:

  #NAME Davenport
  #PROD NaturalONE

Erzeugte Ausgabe:

  Dear Mr Davenport,
  
  I am pleased to invite you to a presentation of our new product NaturalONE.

Beispiel 5

Dies ist ein Beispiel für die Formatierung im Dialog-Modus mit kombinierter Eingabe-/Ausgabe-Verarbeitung. Das Beispielprogramm initiiert Con-forms zeilenorientierten Formatiermodus, übergibt einige Kommandos/Variablen an Con-form und führt eine Subroutine aus, die Statusinformationen und die formatierten Ausgabezeilen auf dem Schirm anzeigt.

DEFINE DATA LOCAL
01 #LINES_PER_PERFORM(P5)   /* counts repeat-loops per PERFORM CNF_OUT
01 #TRACE(A1) INIT<'N'>     /* if 'Y' displays additional trace-infos
01 #OUT_FORM(A1) INIT<'F'>  /* output format
01 #START_PAGE (P3) INIT<1> /* beginning of display
01 #CNTR (P5)               /* Loop counter
01 #STATI                   /* Status information
 02 #STATUS   (A4)          /* can be STRG TERM END or ENDX
 02 #PAGE     (B4)          /* current page number
 02 #LINE     (B4)          /* current line number on page (not .tt/.bt)
 02 #NO_LINES (B4)          /* number of lines returned
 02 REDEFINE #NO_LINES
  03 #NO_LINES_I (I4)
01 #OUTPUT(A30/4)           /* output of formatted line
01 #INDEX (P3)              /* index as pointer to output line
END-DEFINE
*
SET KEY ALL
SET CONTROL 'M9'
INPUT
   008/008 'Demonstration of formatted output to variable'(I)
   /   08X 'Enter page to start display    :' #START_PAGE(AD=MIL)
   /   08X 'Display additional trace data ?:' #TRACE(AD=MIT)
   /   08X 'Please select the output format:' #OUT_FORM(AD=MIT)
           '(F=Final without BP/US-marks'
   /   44X 'M=Final with BP/US marks "<>"'
   /   44X 'I=Intermediate)'
   /   50X 'PF3=Exit'(I)
*
IF *PF-KEY EQ 'PF3'
   SET CONTROL 'MB'
   STOP
END-IF
*
IF NOT (#OUT_FORM EQ 'F' OR EQ 'M' OR EQ 'I')
   REINPUT ' Please enter valid code!' MARK *#OUT_FORM ALARM
END-IF
*
WRITE TITLE LEFT
     'Stat * Page     * Line     * No.Lines >> Formatted Output'(I)
   / '-'(79)(I)
*
SET CONTROL 'MB'
COMPOSE RESETTING ALL /* clear all text format area of Con-form buffer
RESET #NO_LINES
*
* start line-oriented formatting-mode here
* starting from 0
DECIDE ON FIRST VALUE OF #OUT_FORM
   VALUE 'F'
      COMPOSE FORMATTING
           OUTPUT TO VARIABLES #OUTPUT (1:4)      /* to Output
           STATUS #STATUS #PAGE #LINE #NO_LINES   /* get Status
   VALUE 'M'
      COMPOSE FORMATTING
           OUTPUT TO VARIABLES CONTROL '<' '>'
                               #OUTPUT (1:4)      /* to output
           STATUS #STATUS #PAGE #LINE #NO_LINES   /* get Status
   VALUE 'I'
      COMPOSE FORMATTING
           OUTPUT TO VARIABLES CONTROL 'I' 'N'
                               #OUTPUT (1:4)      /* to output
           STATUS #STATUS #PAGE #LINE #NO_LINES   /* get Status
   NONE
      STOP
END-DECIDE
*
RESET #NO_LINES
*
* Put some commands to Con-form to see something
*
COMPOSE MOVING
     '.pl 16;.hs 2;.tt 1Formatting in Variable//;.tt 2//' /* Cmd
     OUTPUT TO VARIABLES #OUTPUT (1:4)           /* to Output
     STATUS #STATUS #PAGE #LINE #NO_LINES        /* get Status
*
COMPOSE MOVING
     '.fs 1;.bt Page End #//;.fi on;.tb *=15' /* Commands
     OUTPUT TO VARIABLES #OUTPUT (1:4)           /* to Output
     STATUS #STATUS #PAGE #LINE #NO_LINES        /* get Status
*
*
* loop 40-times, send commands to con-form and display output
*
COMPOSE ASSIGNING 'Value' = '1-20' /* Assign value to variable &Value
*
FOR #CNTR 1 40                      /* Loop some time
   IF #STATUS NE 'TERM' /* no wait-for-input => error!!!!
      IF #STATUS EQ 'STRG'
         IGNORE
      ELSE
         WRITE 'Unexpected Status-code' #STATUS(AD=OI) 'found!'
             / 'Execution has stopped....'
         STOP
      END-IF
   END-IF
*
   IF #CNTR EQ 21
      COMPOSE ASSIGNING 'Value' = '21-40' /* Assign a variable-value
   END-IF
   COMPOSE ASSIGNING 'CNTR' = #CNTR /* Again assignment
   COMPOSE MOVING
        '.BP;&Value *Pass &CNTR;.BR'      /* Commands
        OUTPUT TO VARIABLES #OUTPUT (1:4)     /* to output
        STATUS #STATUS #PAGE #LINE #NO_LINES  /* get status
   PERFORM CNF-OUT                            /* show result
END-FOR
COMPOSE MOVING
     LAST                                  /* End of processing
     OUTPUT TO VARIABLES #OUTPUT (1:4)     /* to output
     STATUS #STATUS #PAGE #LINE #NO_LINES  /* get status
*
IF #TRACE EQ 'Y'
   WRITE 'End of processing...'(I)
END-IF
*
* Subroutines
*
PERFORM CNF-OUT
*
* Subroutine to display any waiting output from Con-form
*
DEFINE SUBROUTINE CNF-OUT
   RESET #LINES_PER_PERFORM
   REPEAT UNTIL #STATUS EQ 'TERM' /* TERM = input waiting
      PERFORM BREAK               /* do some break processing
      AT BREAK OF #PAGE
         IF #PAGE GT #START_PAGE
            WRITE '-'(79)(I)
         END-IF
         IF #TRACE EQ 'Y'
            WRITE 'End of this page...'(I)
         END-IF
         NEWPAGE
      END-BREAK
      IF #PAGE GE #START_PAGE     /* show line of output
         IF #NO_LINES_I GT 0
            FOR #INDEX 1 #NO_LINES_I
               ADD 1 TO #LINES_PER_PERFORM /* count loops
               WRITE NOTIT NOHDR #STATUS '*' #PAGE '*' #LINE
                                         '*' #NO_LINES
                                         '>>' #OUTPUT (#INDEX)
            END-FOR
         END-IF
      END-IF
      IF #STATUS NE 'STRG'         /* if no wait on output
         ESCAPE BOTTOM
      END-IF
      RESET #NO_LINES
      COMPOSE MOVING
           OUTPUT TO VARIABLES #OUTPUT (1:4)    /* get output
           STATUS #STATUS #PAGE #LINE #NO_LINES /* Status
   END-REPEAT
*
   IF #TRACE EQ 'Y'
    WRITE 'Count of lines per PERFORM was'(I) #LINES_PER_PERFORM(AD=OI)
   END-IF
*
 END-SUBROUTINE
 SET CONTROL 'MB'
END

Beispiel 6

Textblock 'ABC' in Büro 'ZLIB':

.op das=6
.CV c=(&A+&B+&D)*&A/12345678901234567.89

Natural-Programm:

DEFINE DATA LOCAL
 . . . 
01 NA       (P14.1) INIT <-12345678.1> 
01 NB       (N15.1) INIT <1234567890.1> 
01 ND       (P15.1) INIT <1122334455.1> 
01 NC       (N03.6) 
01 NCOMP    (N03.6) 
. . .
END-DEFINE
COMPOSE RESETTING ALL
COMPOSE ASSIGNING 'A'=NA,'B'=NB,'D'=ND
COMPOSE FORMATTING INPUT 'ABC' FROM CABINET 'ZLIB'
COMPOSE EXTRACTING NC='C'
COMPUTE ROUNDED NCOMP=(NA+NB+ND) * NA /12345678901234567.89
WRITE (0) 'CONFORM C =' NC / 'NATURAL C =' NCOMP
END

Erzeugte Ausgabe:

CONFORM C =   -2.344557
NATURAL C =   -2.344557

Beispiel 7

Dieses Beispiel erläutert die Benutzung der Formatieranweisung .TE ON/OFF im Dialogmodus für Eingabe. Ein Natural-Programm ruft das Con-form-Dokument LETTER, das diese Anweisung enthält, aus dem Büro XYLIB.

Natural-Programm:

Anmerkung:
Dieses etwas vereinfachte Natural-Programm dient lediglich zur Demonstration; z.B. erfolgt keine Überprüfung der Pflichtfelder SALUTATION, LASTNAME, STREET, CITY.

DEFINE DATA LOCAL
01 #ENTER (A15) INIT <'Special offer:'>
01 SLINE  (A15) INIT <'.SL 1'>
01 #TEXT   (A60/1:4)
01 SALUTATION (A30)
01 LASTNAME   (A30)
01 STREET     (A30)
01 CITY       (A30)
01 #STATUS (A4)
01 #PAGE   (B4)
01 #LINE   (B4)
01 #NUMBER (B4)
END-DEFINE
COMPOSE RESETTING ALL
INPUT 25X 'Advertising letter'
        /  '-' (75)
        /  'Salutation: ' SALUTATION (AD='_')
        /  'Lastname  : ' LASTNAME (AD='_')
        /  'Street    : ' STREET (AD='_')
        /  'City      : ' CITY (AD='_')
        /  '-' (75)
       //  '-' #ENTER (AD=OI)
        /  '-' #TEXT(1) (AD='_')
        /  '-' #TEXT(2) (AD='_')
        /  '-' #TEXT(3) (AD='_')
        /  '-' #TEXT(4) (AD='_')
COMPOSE ASSIGNING   'SALUT' = SALUTATION,
                    'NAME'  = LASTNAME,
                    'STREET'= STREET,
                    'TOWN'  = CITY
COMPOSE FORMATTING INPUT 'LETTER' FROM CABINET 'XYLIB   '
DECIDE FOR FIRST CONDITION
  WHEN #TEXT(4) NE ' '
       COMPOSE MOVING SLINE #TEXT(1) #TEXT(2) #TEXT(3) #TEXT(4)
               '.TE OFF' STATUS #STATUS #PAGE  #LINE  #NUMBER
  WHEN #TEXT(3) NE ' '
       COMPOSE MOVING SLINE #TEXT(1) #TEXT(2) #TEXT(3)
               '.TE OFF' STATUS #STATUS #PAGE  #LINE  #NUMBER
  WHEN #TEXT(2) NE ' '
       COMPOSE MOVING SLINE #TEXT(1) #TEXT(2)
               '.TE OFF' STATUS #STATUS #PAGE  #LINE  #NUMBER
  WHEN #TEXT(1) NE ' '
       COMPOSE MOVING SLINE #TEXT(1)
               '.TE OFF' STATUS #STATUS #PAGE  #LINE  #NUMBER
  WHEN NONE
       COMPOSE MOVING
               '.TE OFF' STATUS #STATUS #PAGE  #LINE  #NUMBER
END-DECIDE
END

Con-form-Dokument LETTER:

.PL 22;.LM 0;.RM 60;.HS 0;.HM 0;.FM 0;.FS 0
&salut &name
&street
&town
.SL 2
Dear &salut &name.,
.SL
.LM 0;.JU OFF;.FI ON
Your subscription with MAGNIFICENT WILDLIFE magazine will soon expire.
If you act now and renew your subscription for one full year, you will
receive a 40% discount - a savings of $25.00 off the newsstand price!$
.TE ON
.SL 2
Sincerely,$
J. Baker$
Vice President of Sales

Bildschirm vor Eingabe:

                         Advertising letter                                 
--------------------------------------------------------------------------- 
Salutation:  ______________________________                                 
Lastname  :  ______________________________                                 
Street    :  ______________________________                                 
City      :  ______________________________                                 
--------------------------------------------------------------------------- 
                                                                            
Special offer:                                                              
____________________________________________________________                
____________________________________________________________                
____________________________________________________________                
____________________________________________________________

Bildschirm nach Eingabe:

                         Advertising letter                                   
---------------------------------------------------------------------------   
Salutation:  Mister________________________                                   
Lastname  :  Poe___________________________                                   
Street    :  203 North Amity Street________                                   
City      :  Baltimore, Maryland___________                                   
---------------------------------------------------------------------------   
                                                                              
Special offer:                                                                
Take $500 off a trip to one of the world's premier wildlife-                  
viewing destinations through our travel partner.____________                  
____________________________________________________________                  
____________________________________________________________

Resultierender Brief nach erfolgter Formatierung:

MISTER POE                                                     
203 NORTH AMITY STREET                                                     
BALTIMORE, MARYLAND
                                                                
                                                                
Dear MISTER POE,                                               
                                                                
Your subscription with MAGNIFICENT WILDLIFE magazine will       
soon expire. If you act now and renew your subscription for     
one full year, you will receive a 40% discount - a savings      
of $25.00 off the newsstand price!                               
                                                                
TAKE $500 OFF A TRIP TO ONE OF THE WORLD'S PREMIER WILDLIFE-                
VIEWING DESTINATIONS THROUGH OUR TRAVEL PARTNER. 
                                                                
                                                                
Sincerely,                                                      
J. Baker 
Vice President of Sales