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.
Dieser Abschnitt 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]
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
|
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
|
|
[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}, |
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
|
|
|
|
CABINET
operand2 [PASSW=operand3]
|
|||||||||
operand1
FROM
|
|
EXIT
operand2
|
|
||||||
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}, |
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