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.
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.
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
|
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung |
---|---|
DATAAREA |
Löscht alle aktiven Textvariablen. |
TEXTAREA |
Löscht alle Texteingabedaten.
Anmerkung: |
MACROAREA |
Löscht alle Textmakros. |
ALL |
Löscht alle aktiven Textvariablen, Texteingabedaten und Textmakros. |
Siehe auch Beispiel 1 und Beispiel 2.
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 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 [TO ]
operand2 [operand3
[operand4
[operand5]]]]
|
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 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 |
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.
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 |
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 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. |
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) |
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 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: 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: |
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 Wenn die
Beispiel mit spitzen Klammern als Anfang- und Ende-Zeichen: <ABC...XYZ>
Weitere Informationen siehe Abschnitt Verarbeitung im Dialog-Modus und speziell Abschnitt Dialog-Modus für Ausgabe. |
OUTPUT
DOCUMENT-option |
Siehe 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
|
|
[CABINET ]
operand1 [PASSW= operand2]
|
||||||
[GIVING ]
|
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:
Mit dieser Subklausel können Sie angeben, woher die Eingaben für das Textformatierungssystem kommen..
Anmerkungen:
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: 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 |
CABINET
operand2 |
Die Eingaben (ein mit
operand1 angegebener Textblock) können
aus einem bestimmten Con-nect-Büro entmommen werden.
Anmerkung: 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.
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) |
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 |
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
|
[ |
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 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.
|
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
|
[ |
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 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.
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
|
[ |
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.
|
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 |
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 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.
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:
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.
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.
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.
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:
COMPOSE
ASSIGNING
- und COMPOSE
EXTRACTING
-Statements sind nur bei aktivem Dialog-Modus
gültig.
COMPOSE
RESETTING
- und COMPOSE
FORMATTING
-Statements erzwingen die sofortige Beendigung
aller Formatierungsarbeiten.
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 |
|
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 Angaben zur Hervorhebung von Text (z.B. Fettdruck oder Kursivschrift) werden ignoriert, wenn die Ausgabe an ein Nicht-Natural-Programm übergeben wird. |
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)
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
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
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.
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
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
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