Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Einsatz von Formaten in openUTM auf BS2000-Systemen

Ein Format - auch Maske genannt - ist nichts anderes als ein Formular, das an einem Terminal angezeigt oder auf einem Drucker ausgegeben wird. Wie jedes andere Formular besteht ein Format aus Feldern, die man ausfüllen kann (Eingabefelder), und aus Texten, die zum Formular gehören (Textfelder). Formate sind also Formulare, die in einem Rechner gespeichert sind und bei Bedarf an ein Terminal oder einem Drucker ausgegeben werden (siehe auch Abschnitt „Ausgaben auf Drucker").

Ein Format enthält zusätzlich Angaben darüber, wie ein Feld auf dem Bildschirm dargestellt wird (z.B. blinkend), was man in ein Feld eintragen kann (z.B. nur numerische Werte) oder wo bei der Formatanzeige der Cursor stehen soll.

Zusammenarbeit mit dem Formatierungssystem

openUTM arbeitet mit dem Formatsteuersystem FHS (Format Handling System) über die Schnittstelle IUTMFORM zusammen.

Mit dem Formatgenerator IFG (Interactive Format Generator) können Sie FHS-Formate im geführten Dialog schnell und einfach erstellen. Dabei werden automatisch
Adressierungshilfen generiert, die Sie in den Teilprogrammen zur Strukturierung des Nachrichtenbereichs verwenden können. Die fertigen Formate werden in Bibliotheken abgelegt.

In den Teilprogrammen versorgen Sie bei Ein-/Ausgaben das Feld KCMF/kcfn mit dem Formatkennzeichen des gewünschten Formats. Die Nachrichten werden dann von openUTM in Zusammenarbeit mit dem Formatsteuersystem automatisch formatiert.

Das Formatkennzeichen setzt sich zusammen aus:

  • dem Präfix ( *, + oder #), das den Typ des Formats angibt (siehe nächsten Abschnitt). Außerdem ist das Zeichen "-" möglich.

  • dem Formatnamen (höchstens 7 Zeichen lang).

Formattypen

openUTM unterscheidet *Formate, +Formate und #Formate:

*Formate    

verwenden Sie dann, wenn Sie im Programm die Eigenschaften der Formatfelder (z.B. Anzeigeeigenschaften) nicht ändern wollen. Bei *Formaten werden bei Ein-/Ausgaben nur die Datenfelder übertragen.

+Formate

sind Formate, bei denen Sie im Programm die Eigenschaften einzelner Formatfelder abändern können. So können Sie z.B. eine falsche Eingabe blinkend an das Terminal zurückschicken. Hierzu wird jedem Datenfeld ein 2 Byte langes Attributfeld vorangestellt, in das im Programm die gewünschte Attributkombination eingetragen werden kann. Wird binär null eingetragen, so gilt die bei der Formaterstellung definierte Attributkombination.

openUTM stellt Ihnen alle zulässigen Attributkombinationen in Sprach-spezifischen Datenstrukturen zur Verfügung - für COBOL im COPY-Element KCATC, für C/C++ in der Include-Datei kcat.c.

#Formate

sind Formate, bei denen Sie im Programm sowohl die Eigenschaften einzelner Formatfelder als auch globale Eigenschaften der Formatfelder abändern können. Bei der Ein-/Ausgabe sind Attributfelder und Datenfelder in getrennten Blöcke aufgeteilt. Näheres hierzu finden Sie im Handbuch des Formatierungssystems.

Außerdem gibt es -Formate. -Formate werden nicht vom Formatierungssystem formatiert sondern vom Event-Exit FORMAT (siehe "Event-Exit FORMAT (BS2000-Systeme)"). Falls das Formatkennzeichen mit dem Zeichen "-" beginnt verzweigt openUTM zu dieser vom Anwender selbsterstellten Formatierungsroutine.

Positionieren des Cursors

Bei formatierten Ausgaben mit +Formaten und *Formaten ist ein programmgesteuertes Positionieren des Cursors möglich (Funktion KDCSCUR).

Ob Sie für das Setzen des Cursors die Adresse des Attributfeldes oder des Datenfeldes angeben müssen, hängt vom FHS-Startparameter ATTR bzw. NOATTR ab:

  • ATTR (nur zulässig bei +Formaten): Angabe des Attributfeldes

  • NOATTR (bei *Formaten und +Formaten): Angabe des Datenfeldes

Der Cursor kann durch entsprechende Markierung des Attributfeldes an den Anfang des zugeordneten Datenfeldes gesetzt werden. Die Position des entsprechenden Bildschirmfeldes ist aus der Formatbeschreibung bekannt. Werden im Programmlauf mehrere Attributfelder einer Ausgabenachricht gleichzeitig für den Cursor gekennzeichnet, so wird nur der erste Eintrag berücksichtigt.

Durch den Aufruf der Funktion KDCSCUR() wird der Cursor auf ein bestimmtes Feld gesetzt. Als Argument der Funktion wird das Feld im Nachrichtenbereich angegeben, auf das der Cursor bei der nächsten Ausgabe gesetzt werden soll.

Setzen des Cursor in COBOL-Teilprogrammen:

CALL "KDCSCUR" USING FNAME.

Setzen des Cursor in C/C++-Teilprogrammen:

KDCSCUR (feldname); (Das Ergebnis der Funktion ist vom Typ void)

Im Zusammenhang mit KDCS-Attributfunktionen ( +Formate und *Formate ) gilt folgende Vereinbarung:
Durch den Aufruf eines Unterprogrammes "KDCSCUR", mit dem i-ten Attributfeld AF(i) als Parameter, kann der Cursor auf den Anfang des Nachrichtenfeldes F(i) positioniert werden. Das Unterprogramm enthält das Cursor-Kennzeichen als Konstante und setzt es additiv zu den bereits spezifizierten Attributen in das angegebene Attributfeld ab.

Beispiel:

CALL "KDCSCUR" USING AF1

Hier möchte der Teilprogrammlauf neben dem bereits definierten Feldattribut auch den Cursor an den Anfang des Nachrichtenfeldes F1 setzen.

Formatwechsel zwischen Ausgabe und Eingabe

Wenn openUTM eine Nachricht mit einem bestimmten Formatkennzeichen ausgegeben hat, dann muss bei der nachfolgenden Eingabe bei MGET in KCMF/kcfn der gleiche Formatname angegeben werden.

Ausnahme:
Falls nicht mit Teilformaten gearbeitet wird, toleriert openUTM beim MGET ein falsches Formatkennzeichen in KCMF/kcfn: Die Nachricht wird trotzdem gemäß dem letzten Bildschirmformat formatiert, der Returncode 05Z wird gesetzt und in KCRMF/kcrfn das Formatkennzeichen des zuletzt ausgegebenen Formats angezeigt.

Falls beim Einlesen von Teilformaten im Feld KCMF/kcfn ein falsches Formatkennzeichen angegeben ist, setzt openUTM den Returncode 03Z, gibt in KCRMF/kcrfn das richtige Formatkennzeichen zurück und setzt KCRLM auf 0. In den Nachrichtenbereich wird nichts eingetragen.