Dieses Statement kann nur verwendet werden, wenn Con-nect/Con-form installiert ist.
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 Textformatierer wieder an das Natural-Programm übergeben werden.
Wenn die Con-form-Anweisungen ausgeführt worden sind (d.h. 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, das das
COMPOSE
-Statement ausführt,
ein Nicht-Natural-Programm.
RESETTING-clause | Die RESETTING -Klausel dient dazu, Informationen aus
dem Pufferbereich des Textformatierers zu löschen und Speicherplatz im
COMPOSE -Puffer (der auf Großrechnern mit dem
CSIZE -Parameter im
Natural-Parametermodul zugewiesen wird) frei zu machen.
Siehe RESETTING-Klausel. |
---|---|
MOVING-clause | Die MOVING -Klausel dient dazu, Textzeilen in den
Pufferbereich des Textformatierers oder direkt an den Formatierer zu übertragen
und formatierten Text aus dem Arbeitsbereich des Formatierers zu lesen.
Siehe MOVING-Klausel. |
ASSIGNING-clause | Die ASSIGNING -Klausel dient dazu, Textvariablen
Werte von Natural-Variablen zuzuweisen.
Siehe ASSIGNING-Klausel. |
FORMATTING-clause | Die FORMATTING -Klausel dient dazu, aus Rohtext und
Con-form-Befehlen einen fertig formatierten Text, mit korrektem Zeilen- und
Seitenumbruch, zu erstellen.
Siehe FORMATTING-Klausel. |
EXTRACTING-clause | Die EXTRACTING -Klausel dient dazu,
Natural-Variablen die Werte von Textvariablen zuzuweisen.
Siehe EXTRACTING-Klausel. |
RESETTING
|
DATAAREA
|
||||
TEXTAREA
|
|||||
MACROAREA
|
|||||
ALL
|
Mit dieser Klausel kann folgendes aus dem Textformatpufferbereich gelöscht werden:
Anmerkung:
Aus Kompatibilitätsgründen bezieht sich das Wort
TEXTAREA
auf die DATAAREA
des Formatierers, so wie
sie in der MOVING
-Klausel verwendet wird.
Mit dieser Klausel können ein oder mehrere Textwerte in den
Textformatierpufferbereich übertragen werden (Syntax 1). Dieser Bereich kann als
Eingabequelle für Formatieroperationen verwendet werden. Wartet der
Textformatierer gerade auf Eingaben (siehe
Dialog-Modus),
wird der Text direkt an ihn übergeben, ohne im Con-form-Textbereich
zwischengespeichert zu werden (Syntax
1 und Syntax 2). Die
Source-Eingabe wird mit der LAST
-Option beendet. Wartet der
formatierte Text gerade darauf, ausgegeben zu werden (siehe
Dialog-Modus),
dann dient Syntax 3 der
MOVING
-Klausel dazu, die Kontrolle vom Natural-Programm wieder an
den Formatierer zu übergeben. Zur Beschreibung der Statusvariablen siehe
FORMATTING-Klausel.
Je nach Status des Dialog-Modus 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 der Formatierer im Dialog-Modus für Eingabe ist
und auf Eingabedaten wartet (TERM
in der ersten
Statusvariablen).
MOVING [operand1]
37
[TO DATAAREA ] [LAST ] [STATUS [TO ] operand2
[operand3 [operand4
[operand5]]]]
|
Syntax 2 der MOVING
-Klausel gilt, wenn der Formatierer im
Dialog-Modus für Ein- und Ausgabe ist und auf weitere Eingabedaten wartet
(TERM
in der ersten Statusvariablen). In diesem Modus akzeptiert
der Formatierer jeweils nur eine Eingabezeile zur Zeit.
Der Ausführungskontext kann sich zwischen einer Reihe ausgeführter
COMPOSE
-Statements ändern. Daher müssen die Ausgabevariablen neu
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 der Formatierer im
Dialog-Modus für Ausgabe (und möglicherweise gleichzeitig für Eingabe) ist und
die Ausgabe an das Natural-Programm übergibt (STRG
in der ersten
Statusvariablen).
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 |
operand2 muss mit Format/Länge A4 definiert sein. operand3, operand4 und operand5 müssen mit Format/Länge B4 definiert sein.
Mit dieser Klausel werden Con-form-Textvariablen Werte zugewiesen. Anschließende Formatiervorgänge können sich auf diese Textvariablen beziehen.
Die Namen von Textvariablen sollten in Großbuchstaben angegeben werden.
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 |
Diese Klausel veranlasst Con-form dazu, eine formatierte Ausgabe zu erzeugen.
Die Formatier-Optionen werden in einer oder mehreren Subklauseln (subclauses) angegeben. Wenn keine Subklauseln angegeben werden, nimmt Con-form die gültigen Standard-Formatier-Optionen. Die Statusvariable wird im Dialog-Modus verwendet.
FORMATTING
|
OUTPUT-subclause | |||||
INPUT-subclause | ||||||
STATUS-subclause | ||||||
PROFILE-subclause | ||||||
MESSAGES-subclause | ||||||
ERRORS-subclause | ||||||
ENDING-subclause | ||||||
STARTING-subclause |
OUTPUT-subclause | Das Ausgabemedium. Dies kann ein
Natural-Report, ein Con-nect-Büro, eine oder mehrere Natural-Variablen (oder
ein Array von Natural-Variablen) oder ein Nicht-Natural-Programm sein.
Siehe Output Subclause |
|
---|---|---|
INPUT-subclause | Das Eingabemedium. Dies kann ein
Con-nect-Dokument, sowie auch die COMPOSE DATAAREA (siehe
MOVING-Klausel), die
Umgebung der Natural-Programme, die die COMPOSE -Statements
ausführen (siehe auch MOVING-Klausel), ein
Nicht-Natural-Programm oder eine Kombination dieser vier 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 | 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 gerade formatierten Dokuments. 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. Ist der aktuelle Wert außerhalb des Bereichs, wird der Wert auf 1 gesetzt. | |
PROFILE-subclause | Der Textblock, der vor den Eingaben verarbeitet wird. | |
MESSAGES-subclause | Steuert die Ausgabe von Warnmeldungen und statistischen Informationen und die Fehlerverarbeitung. | |
ERRORS-subclauses | ||
ENDING-subclause | Siehe ENDING-Subklausel. | |
STARTING-subclause | Siehe STARTING-Subklausel. |
Mit dieser Subklausel können Sie den formatierten Con-form-Text an eine bestimmte Ausgabestelle schicken.
Wird diese Subklausel weggelassen, 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:
OUTPUT (rep) |
Wenn die Ausgabe an einen Drucker geschickt wird (d.h. wenn die
Reportnummer nicht 0 ist) und ein Con-nect-Druckerprofil geladen wurde (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 wird die Ausgabe unterdrückt. |
OUTPUT CALLING | Siehe Abschnitt Nicht-Natural-Programme. |
OUTPUT TO VARIABLES |
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 operand2 und operand3 müssen Format/Länge A1 haben. Weitere Informationen, siehe Abschnitt Dialog-Modus. |
OUTPUT DOCUMENT | Siehe DOCUMENT-Option weiter unten. |
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 |
operand3 (Format/Länge B10) wird vom Formatierer verwendet, um einen eindeutigen Schlüssel vom Dokument an das Natural-Programm zurückzugeben. Er wird nur aus Kompatibilitätsgründen unterstützt.
operand4 (Format/Länge B4) wird vom Formatierer verwendet, um eine ISN, die auf ein formatiertes Ausgabedokument zeigt, an das Natural-Programm zurückzugeben. Diese ISN kann sinnvoll sein bei der Referenzierung eines Dokuments in aufeinanderfolgenden Aufrufen von Con-nect-APIs.
Wenn operand1 (der bis zu 8 Zeichen lang sein darf) nicht angegeben wird, wird das Dokument in das aktuelle Benutzerbüro gestellt (d.h. das Büro, dessen ID der des gerade aktiven Natural-Benutzers entspricht).
Ein Passwort (bis zu 8 Zeichen) muss angegeben werden, wenn ein Dokument in einem Büro gespeichert wird, auf das der aktuelle Benutzer keinen Zugriff hat.
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.
Das Dokument wird ohne Namen in das Fach COMPOSE
gestellt. In der Beschreibungszeile steht der Name des Programms, das das
COMPOSE FORMATTING
-Statement ausgeführt hat, sowie Datum und
Uhrzeit der Ausführung.
Wenn Sie das Schlüsselwort INTERMEDIATE
weglassen, wird
das Dokument fertig formatiert erstellt. In diesem Falle werden
Texthervorhebungsoptionen wie etwa Fettdruck oder Kursivschrift ignoriert.
INPUT
|
DATAAREA
|
FROM
|
EXIT
operand2
|
9 | |||||
CABINETS operand2
[PASSW= operand3]
|
|||||||||
operand1 FROM
|
EXIT operand2
|
10 | |||||||
CABINETS
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 |
Mit dieser Subklausel wird angegeben, woher die Eingaben für den
Textformatierer kommen. Die Eingaben können aus dem Con-form-Datenbereich
kommen (eine Kombination aus Text aus dem Datenbereich und aus dem Dialog-Modus
ist ebenfalls möglich), der mit einer oder mehreren
MOVING
-Operationen gefüllt worden sein muss, oder mit einem
Textblock (durch operand1 angegeben). Der Textblock
kann einem Con-nect-Büro entstammen 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.
Ein Passwort muss angegeben werden, wenn ein Dokument in einem Büro gespeichert wird, auf das der aktuelle Benutzer keinen Zugriff hat.
Con-form erzwingt, dass Con-nect-Zugriffsbeschränkungen eingehalten werden, und akzeptiert nur Büro-IDs, die in Con-nect definiert sind.
Ohne diese Subklausel wird standardmäßig der Con-form-Datenbereich verarbeitet.
Anmerkung:
Büro- und Textblock-IDs müssen in Großbuchstaben angegeben
werden.
[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:
PROFILE
operand1
|
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | ja | nein |
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).
MESSAGES
|
[LISTED ] [ON ]
(rep)
|
||
SUPPRESSED
|
Bei Beendigung der Formatierung werden Warnmeldungen und statistische
Informationen ausgegeben. SUPPRESSED
bewirkt, dass keine Meldungen
ausgegeben und Fehler ignoriert werden.
ERRORS
|
[LISTED ] [ON ]
(rep)
|
||
INTERCEPTED
|
Mit dieser Subklausel können Sie bestimmen, was im Falle eines Formatierungsfehlers geschehen soll. Der Fehler kann entweder ignoriert, von einer Natural-Standard-Fehlerroutine verarbeitet oder in einem bestimmten Natural-Report (rep) aufgelistet 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
|
[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 |
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.
STARTING [FROM ] [PAGE ]
operand1
|
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | N | P | ja | nein |
Diese Subklausel bewirkt, dass die Ausgabe des formatierten Textes solange unterdrückt wird, bis eine bestimmte Seitennummer (operand1) erreicht ist.
EXTRACTING [TEXTVARIABLE ] {operand
=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 |
Mit dieser Klausel können Sie Natural-Variablen die Werte von Textvariablen zuweisen. Die aktuellen Textvariablen-Werte können das Ergebnis eines vorhergehenden Formatiervorgangs sein.
Die Namen von Textvariablen müssen in Großbuchstaben angegeben werden.
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 in den Arbeitsbereich des Formatierers übertragen (und
können in späteren Formatiervorgängen nicht wiederverwendet werden). Ist der
Formatiervorgang nicht aktiv, werden Texteingaben im
COMPOSE
-Puffer (DATAAREA
) zwischengespeichert.
Dadurch ist es möglich, die Eingabe für mehrere Formatiervorgänge
wiederzuverwenden.
Da der Formatierpuffer 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.
Dialog-Modus-Verarbeitung ist eine Reihe von Interaktionen zwischen dem Benutzerprogramm und dem Formatierer, 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 Formatierer Rohtext als Eingabe zu liefern. Er akzeptiert auch formatierte Ausgaben direkt aus der aktuellen Programmumgebung.
Der Dialog entsteht dadurch, dass der Formatiervorgang in eine Reihe von
Schritten unterteilt wird, von denen jeder einzelne durch ein eigenes
COMPOSE
-Statement aufgerufen wird:
In den Dialog-Modus für Eingabe gelangt man, wenn DATAAREA
die Quelle des Eingabetextes ist oder der Formatierbefehl .TE ON
auftaucht und wenn der Con-form-Datenbereich keinen weiteren zu verarbeitenden
Text mehr enthält. Dialog-Modus für Eingabe wird durch das Wort
TERM
in der ersten STATUS
-Variablen angezeigt.
Das Benutzerprogramm sollte daraufhin die erforderlichen Eingaben
machen, indem es die MOVING
-Funktion eines anschließend
verarbeiteten COMPOSE
-Statements aufruft. Es kann die
Terminaleingaben beenden, indem es die LAST
-Option der
MOVING
-Funktion verwendet oder durch .TE OFF
, falls
der Dialog-Modus durch .TE ON
begonnen wurde, und zwar als Text
mittels der MOVING
-Funktion. Das Ende der Formatierung wird durch
END
(bzw. ENDX
im Falle eines Fehlers) in der ersten
Statusvariablen angezeigt.
In den Dialog-Modus für Ausgabe gelangt man, wenn das Ausgabeziel
TO VARIABLES
ist. Der Formatierer 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). Dialog-Modus für Ausgabe wird durch
STRG
in der ersten STATUS
-Variablen angezeigt.
Das Benutzerprogramm sollte daraufhin die soeben in die
Natural-Variablen gestellte formatierte Ausgabe nehmen 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)
angezeigt.
Anmerkung:
Wird Dialog-Modus verwendet (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 der Formatierer weitere Eingabedaten verlangt (angezeigt
durch TERM
) oder eine Ausgabe erzeugt hat (angezeigt durch
STRG
), muss das Natural-Programm daher entsprechend reagieren.
Wenn Sie im Dialog-Modus für kombinierte Ein- und Ausgabeverarbeitung sind, kann der Formatierer jeweils nur eine Eingabezeile auf einmal annehmen. Lediglich im reinen Eingabe-Modus kann er mehrere Zeilen annehmen.
Wie bereits erwähnt, gelangt man in den Dialog-Modus über ein
COMPOSE FORMATTING
-Statement, das 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 FORMATTING
erzwingen
die sofortige Beendigung aller Formatierung.
In Abhängigkeit von den in der FORMATTING
-Klausel
angegebenen Parametern ist es möglich, Ein- und Ausgabe von
Nicht-Natural-Programmen zu verarbeiten. Solche Programme werden über den
gleichen Mechanismus, wie er im CALL
-Statement verwendet wird,
aufgerufen.
COMPOSE
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-/Ausgabe 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) | 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) |
Response Code wird von Nicht-Natural-Programmen an den Formatierer übergeben. Mögliche Werte: |
|
X'00' | Funktion erfolgreich ausgeführt. | |
X'01' | Bei Funktion O : Dokument nicht gefunden.
|
|
Bei Funktion R : Dokument-Ende erreicht.
|
||
X'FF' | Funktion nicht beendet. | |
Parameter 3 (Format A1/256) | Bei Funktionen O und
W werden diese Parameter vom Formatierer an
Nicht-Natural-Programme übergeben.
Parameter von Funktion |
|
Bytes 1 - 2 | Geben die Länge n dieses Parameters an. | |
Bytes 3 - 4 | Leer. | |
Bytes 5 - n | Funktion O: Dokumentname. | |
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. |
COMPOSE RESETTING ALL FORMATTING INPUT 'TEXT' FROM CABINET 'TLIB' OUTPUT (1) MESSAGES LISTED ON (0)
Ergebnis des obigen COMPOSE
-Statements: der formatierte
Text des im Con-nect-Büro TLIB
gespeicherten Textblocks
TEXT
wird auf Report 1 ausgegeben. Fehler und statistische Angaben
werden auf Report 0 (dem Standarddrucker) ausgegeben.
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
Obige COMPOSE
-Statements bewirken eine formatierte
Textausgabe an Report 0 (Standarddrucker).
COMPOSE ASSIGNING 'VAR1' = 'Text1', 'VAR2' = 540
Obiges COMPOSE
-Statement bewirkt die Zuordnung von Werten
zu den Con-form-Textvariablen &VAR1
und
&VAR2
in einer Con-nect-Prozedur.
Text Block XYZ
in 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 Natural 4.2
Erzeugte Ausgabe:
Dear Mr Davenport, I am pleased to invite you to a presentation of our new product Natural 4.2.
Dies ist ein Beispiel für 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 formatierte Ausgabezeile 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) /* actual page-number 02 #LINE (B4) /* actual 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 out 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 "<>"' / 09X '(only, if CMF-Zap 2056 applied =>) 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 con-form buffers 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 1Formatierung 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 Ende Seite #//;.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 'Wert' = '1-20' /* Assign value to variable &Wert * FOR #CNTR 1 40 /* Loop some time IF #STATUS NE 'TERM' /* nein 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 'Wert' = '21-40' /* Assign a variable-value END-IF COMPOSE ASSIGNING 'CNTR' = #CNTR /* Again assignment COMPOSE MOVING '.BP;&Wert *Durchlauf &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 nein wait on out 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