4.5 Erfragen und Ändern von Attributen

Zum Setzen und Abfragen von Attributwerten im Dialog Manager werden drei unterschiedliche Datenstrukturen verwendet. In der Struktur DM-Value kann genau ein Wert erfragt bzw. gesetzt werden, in der Struktur DM-ValueArray hingegen können bis zu 16 Werte mit einem Aufruf erfragt bzw. gesetzt werden. Die Struktur DM-ValueIndex dient zur Übergabe eines zusätzlichen Indexwertes.

Diese Strukturen sind in IDMcobls.cob und IDMcobws.cob definiert.

4.5.1 DM-Value

Mit Hilfe dieser Struktur kann immer genau ein Wert im Dialog Manager gesetzt oder erfragt werden. Diese Struktur ist wie folgt definiert:

02 DM-Value.
   03 DM-object                  pic 9(9) binary value 0.
   03 DM-attribute               pic 9(9) binary value 0.
   03 DM-indexcount              pic 9(4) binary value 0.
   03 DM-index                   pic 9(4) binary value 0.
   03 DM-second                  pic 9(4) binary value 0.
   03 DM-datatype                pic 9(4) binary value 0.
   03 DM-long-first              pic 9(9) binary value 0.
   03 DM-long-second             pic 9(9) binary value 0.
   03 DM-value-object            pic 9(9) binary value 0.
   03 DM-value-boolean           pic 9(4) binary value 0.
   03 DM-value-cardinal          pic 9(4) binary value 0.
   03 DM-value-classid           pic XX value "??".
   03 filler                     pic XX value low-values.
   03 DM-value-integer           pic S9(9) binary value 0.
   03 DM-value-index.
      04 DM-value-long-first     pic 9(9) binary value 0.
      04 filler redefines DM-value-long-first.
         05 filler               pic XX.
         05 DM-value-first       pic 9(4) binary.
      04 DM-value-long-second    pic 9(9) binary value 0.
      04 filler redefines DM-value-long-second.
         05 filler               pic XX.
         05 DM-value-second      pic 9(4) binary.
   03 DM-value-attribute         pic 9(9) binary value 0.
   03 DM-value-method            pic 9(9) binary value 0.
   03 DM-value-pointer           pic X(8) value low-values.
   03 DM-value-string-putlen     pic 9(4) binary value 0.
   03 DM-value-string-getlen     pic 9(4) binary value 0.
   03 DM-value-string-size       pic 9(4) binary value 80.
   03 DM-value-string-S.
      04 DM-value-string         pic X(80) value low-values.
      04 filler                  pic X(80) value low-values.
   03 filler                     pic XX value low-values.

Definition in der COBOL-Schnittstelle für Micro Focus Visual COBOL

02 DM-Value.
   03 DM-object                  pic 9(9) binary value 0.
   03 DM-attribute               pic 9(9) binary value 0.
   03 DM-indexcount              pic 9(4) binary value 0.
   03 DM-index                   pic 9(4) binary value 0.
   03 DM-second                  pic 9(4) binary value 0.
   03 DM-datatype                pic 9(4) binary value 0.
   03 DM-long-first              pic 9(9) binary value 0.
   03 DM-long-second             pic 9(9) binary value 0.
   03 DM-value-object            pic 9(9) binary value 0.
   03 DM-value-boolean           pic 9(4) binary value 0.
   03 DM-value-cardinal          pic 9(4) binary value 0.
   03 DM-value-classid           pic XX value "??".
   03 filler                     pic XX value low-values.
   03 DM-value-integer           pic S9(9) binary value 0.
   03 DM-value-index.
      04 DM-value-long-first     pic 9(9) binary value 0.
      04 filler redefines DM-value-long-first.
         05 filler               pic XX.
         05 DM-value-first       pic 9(4) binary.
      04 DM-value-long-second    pic 9(9) binary value 0.
      04 filler redefines DM-value-long-second.
         05 filler               pic XX.
         05 DM-value-second      pic 9(4) binary.
   03 DM-value-attribute         pic 9(9) binary value 0.
   03 DM-value-method            pic 9(9) binary value 0.
$IF P64 SET
   03 DM-value-pointer           pointer value null.
$ELSE
   03 DM-value-pointer           pointer value null.
   03 filler                     pic X(4) value low-values.
$END
   03 DM-value-string-putlen     pic 9(4) binary value 0.
   03 DM-value-string-getlen     pic 9(4) binary value 0.
   03 DM-value-string-size       pic 9(4) binary value 80.
   03 DM-value-string-S.
      04 DM-value-string         pic X(80) value low-values.
      04 filler                  pic X(80) value low-values.
   03 filler redefines DM-value-string-S.
      04 DM-value-string-u       pic N(80) national.
   03 filler                     pic XX value low-values.

Bedeutung der Strukturelemente

DM-object

Objekt, dessen Attribut verändert oder zurückgegeben werden soll.

DM-attribute

Attribut, das gesetzt oder zurückgegeben werden soll.

DM-indexcount

Mit Hilfe dieses Strukturelementes wird gesteuert, wie viele Indizes der Dialog Manager beim Setzen oder Abfragen eines Attributes verwenden soll.

DM-index

Index des Attributes, das gesetzt oder zurückgegeben werden soll.

Dieser Index ist nur gültig oder wird nur benutzt, wenn das Attribut ein indiziertes Attribut ist oder DM-indexcount mit einem Wert größer 0 belegt ist.

DM-second

Dieses Element stellt den zweiten Index dar. Er wird nur benutzt, wenn DM-indexcount größer als 1 ist.

DM-long-first

Dieses Element stellt den ersten Index dar. Er wird nur benutzt, wenn DM-indexcount größer als 1 ist und eine Funktion aufgerufen wird, die den langen Index auswertet. Diese erkennt man an dem Namen DMcob_L*. Damit können Indexwerte im Bereich von 0 bis 65535 an den Dialog Manager übergeben werden.

DM-long-second

Dieses Element stellt den zweiten Index dar. Er wird nur benutzt, wenn DM-indexcount größer als 1 ist und eine Funktion aufgerufen wird, die den langen Index auswertet. Diese erkennt man an dem Namen DMcob_L*.

DM-datatype

Dieser Datentyp beschreibt, welcher Teil der Struktur gefüllt ist und benutzt werden soll, um den Wert zu erhalten.

DM-value-integer

Wird verwendet, um ein Integer-Attribut zu setzen oder zu erhalten.

DM-value-object

Wird verwendet, um ein Attribut zu setzen oder zu erhalten, das ein IDM-Objekt wie Farbe, Zeichensatz oder Objekt ist.

DM-value-boolean

Wird verwendet, um Boolean-Attribute zu setzen oder zu erhalten.

DM-value-cardinal

Wird verwendet, um Enumeration und Cardinal Werte zu übergeben.

DM-value-classid

Wird verwendet, um die Klasse zu erhalten, zu der das Objekt gehört.

DM-value-first, DM-value-second

Diese beiden Elemente werden immer zusammen benutzt. In ihnen wird ein Indexwert an den Dialog Manager übergeben bzw. ein Indexwert vom Dialog Manager an die COBOL-Funktion zurückgegeben.

DM-value-long-first, DM-value-long-second

Diese beiden Elemente werden immer zusammen benutzt. In ihnen wird ein langer Indexwert mit dem Wertebereich 0 … 65535 an den Dialog Manager übergeben bzw. vom Dialog Manager an die COBOL-Funktion zurückgegeben.

DM-value-attribute

Dieses Element wird belegt, wenn die ID eines benutzerdefinierten Attributes erfragt werden soll.

DM-value-method

Dieses Element wird zur Handhabung von im Dialog Manager implementierten Methoden verwendet.

DM-value-pointer

Dieses Element dient zur Übergabe von Sammlungen (Wertereferenzen) und Daten mit dem Datentyp DT-anyvalue.

Es wird nur von der COBOL-Schnittstelle für Micro Focus Visual COBOL verwendet.

DM-value-string-putlen

Kann gesetzt werden, um dem Dialog Manager das Ende eines Strings zu zeigen, wenn der String abweichend von den getroffenen Definitionen beendet werden soll. Es wird die Anzahl der Zeichen angegeben.

DM-value-string-getlen

Beinhaltet die Länge des vom Dialog Manager zurückgegebenen Strings. Es wird die Anzahl der Zeichen angegeben.

DM-value-string-size

Internes Feld, auf keinen Fall direkt zu ändern! Es wird die Anzahl der Zeichen angegeben.

DM-value-string

Wird verwendet, um String-Attribute zu setzen oder zu erhalten. Diese Strings dürfen nicht länger als 80 Zeichen sein.

DM-value-string-u

In diesem Element können Strings als National Character (PIC N) übergeben werden, wenn mit Unicode-Strings (UTF-16) gearbeitet wird (nur Micro Focus Visual COBOL).

Hinweis

Vor IDM-Version A.06.01.d war die Struktur DM-Value wie folgt definiert:

02 DM-Value.
   03 DM-object              pic 9(9) binary value 0.
   03 DM-attribute           pic 9(9) binary value 0.
   03 DM-indexcount          pic 9(4) binary value 0.
   03 DM-index               pic 9(4) binary value 0.
   03 DM-second              pic 9(4) binary value 0.
   03 DM-datatype            pic 9(4) binary value 0.
   03 DM-long-first          pic 9(9) binary value 0.
   03 DM-long-second         pic 9(9) binary value 0.
   03 DM-value-object        pic 9(9) binary value 0.
   03 DM-value-boolean       pic 9(4) binary value 0.
   03 DM-value-cardinal      pic 9(4) binary value 0.
   03 DM-value-classid       pic XX value "??".
   03 filler                 pic XX value low-values.
   03 DM-value-integer       pic S9(9) binary value 0.
   03 DM-value-first         pic 9(4) binary value 0.
   03 DM-value-second        pic 9(4) binary value 0.
   03 DM-value-attribute     pic 9(9) binary value 0.
   03 DM-value-method        pic 9(9) binary value 0.

   03 DM-value-string-putlen pic 9(4) binary value 0.
   03 DM-value-string-getlen pic 9(4) binary value 0.
   03 DM-value-string-size   pic 9(4) binary value 80.
   03 DM-value-string        pic X(80) value low-values.
   03 filler                 pic XX value low-values.

4.5.2 DM-ValueIndex

Diese Struktur ermöglicht ein vollwertiges Index-Argument. Sie wird von den DMcob_Value* Funktionen der COBOL-Schnittstelle für Micro Focus Visual COBOL für die Verarbeitung der Sammlungsdatentypen genutzt. Die Struktur steht aber für alle unterstützten COBOL-Varianten zur Verfügung und ist nicht auf diese Anwendungsbereiche beschränkt. Sie ist identisch mit der Struktur DM-Value.

4.5.3 DM-ValueArray

Für den Aufruf einiger Dialog Manager Funktionen wird ein Array von bis zu 16 Strukturelementen zum Aufruf benötigt. Dazu ist folgende Struktur definiert:

02 DM-ValueArray.
   03 DM-value-size              pic 9(4) binary value 16.
   03 DM-value-count             pic 9(4) binary value 0.
   03 DM-ValueRecord occurs 16 indexed by DM-valuecount.
      04 DM-va-object            pic 9(9) binary value 0.
      04 DM-va-attribute         pic 9(9) binary value 0.
      04 DM-va-indexcount        pic 9(4) binary value 0.
      04 DM-va-index             pic 9(4) binary value 0.
      04 DM-va-second            pic 9(4) binary value 0.
      04 DM-va-datatype          pic 9(4) binary value 0.
      04 DM-va-long-first        pic 9(9) binary value 0.
      04 DM-va-long-second       pic 9(9) binary value 0.
      04 DM-va-value-object      pic 9(9) binary value 0.
      04 DM-va-value-boolean     pic 9(4) binary value 0.
      04 DM-va-value-cardinal    pic 9(4) binary value 0.
      04 DM-va-value-classid     pic XX value "??".
      04 filler                  pic XX value low-values.
      04 DM-va-value-integer     pic S9(9) binary value 0.
      04 DM-va-value-index.
         05 DM-va-value-long-first pic 9(9) binary value 0.
         05 filler redefines DM-va-value-long-first.
            06 filler            pic XX.
            06 DM-va-value-first pic 9(4) binary.
         05 DM-va-value-long-second pic 9(9) binary value 0.
         05 filler redefines DM-va-value-long-second.
            06 filler            pic XX.
            06 DM-va-value-second pic 9(4) binary.
      04 DM-va-value-attribute   pic 9(9) binary value 0.
      04 DM-va-value-method      pic 9(9) binary value 0.
      04 DM-va-value-pointer     pic X(8) value low-values.
      04 DM-va-value-string-putlen pic 9(4) binary value 0.
      04 DM-va-value-string-getlen pic 9(4) binary value 0.
      04 DM-va-value-string-size   pic 9(4) binary value 80.
      04 DM-va-value-string-S.
         05 DM-va-value-string   pic X(80) value low-values.
         05 filler               pic X(80) value low-values.
      04 filler                  pic XX value low-values.

Definition in der COBOL-Schnittstelle für Micro Focus Visual COBOL

02 DM-ValueArray.
   03 DM-value-size              pic 9(4) binary value 16.
   03 DM-value-count             pic 9(4) binary value 0.
   03 DM-ValueRecord occurs 16 indexed by DM-valuecount.
      04 DM-va-object            pic 9(9) binary value 0.
      04 DM-va-attribute         pic 9(9) binary value 0.
      04 DM-va-indexcount        pic 9(4) binary value 0.
      04 DM-va-index             pic 9(4) binary value 0.
      04 DM-va-second            pic 9(4) binary value 0.
      04 DM-va-datatype          pic 9(4) binary value 0.
      04 DM-va-long-first        pic 9(9) binary value 0.
      04 DM-va-long-second       pic 9(9) binary value 0.
      04 DM-va-value-object      pic 9(9) binary value 0.
      04 DM-va-value-boolean     pic 9(4) binary value 0.
      04 DM-va-value-cardinal    pic 9(4) binary value 0.
      04 DM-va-value-classid     pic XX value "??".
      04 filler                  pic XX value low-values.
      04 DM-va-value-integer     pic S9(9) binary value 0.
      04 DM-va-value-index.
         05 DM-va-value-long-first pic 9(9) binary value 0.
         05 filler redefines DM-va-value-long-first.
            06 filler            pic XX.
            06 DM-va-value-first pic 9(4) binary.
         05 DM-va-value-long-second pic 9(9) binary value 0.
         05 filler redefines DM-va-value-long-second.
            06 filler            pic XX.
            06 DM-va-value-second pic 9(4) binary.
      04 DM-va-value-attribute   pic 9(9) binary value 0.
      04 DM-va-value-method      pic 9(9) binary value 0.
$IF P64 SET
      04 DM-va-value-pointer     pointer value null.
$ELSE
      04 DM-va-value-pointer     pointer value null.
      04 filler                  pic X(4) value low-values.
$END
      04 DM-va-value-string-putlen pic 9(4) binary value 0.
      04 DM-va-value-string-getlen pic 9(4) binary value 0.
      04 DM-va-value-string-size   pic 9(4) binary value 80.
      04 DM-va-value-string-S.
         05 DM-va-value-string   pic X(80) value low-values.
         05 filler               pic X(80) value low-values.
      04 filler redefines DM-va-value-string-S.
         05 DM-va-value-string-u pic N(80) national.
      04 filler                  pic XX value low-values.

Bedeutung der Strukturelemente

DM-value-size

Hier wird die Größe des Feldes abgelegt. Dieser Wert ist momentan mit 16 vorbelegt und darf nicht geändert werden.

Hinweis

Der Wert kann sich in zukünftigen Versionen ändern.

DM-value-count

In diesem Feld wird die momentane Belegung des Arrays abgelegt, d.h., die Anzahl der im Moment benutzten Elemente des Feldes.

DM-va-object

Objekt, dessen Attribut verändert oder zurückgegeben werden soll.

DM-va-attribute

Attribut, das gesetzt oder zurückgegeben werden soll.

DM-va-indexcount

Mit Hilfe dieses Strukturelementes wird gesteuert, wie viele Indizes der Dialog Manager beim Setzen oder Abfragen eines Attributes verwenden soll.

DM-va-index

Index des Attributes, das gesetzt oder zurückgegeben werden soll.

Dieser Index ist nur gültig, wenn DM-va-indexcount mit einem Wert größer 0 belegt ist.

DM-va-second

Dieses Element stellt den zweiten Index dar. Er wird nur benutzt, wenn DM-va-indexcount größer als 1 ist.

DM-va-datatype

Dieser Datentyp beschreibt, welcher Teil der Struktur gefüllt ist und benutzt werden soll, um den Wert zu erhalten.

DM-va-value-integer

Wird verwendet, um ein Integer-Attribut zu setzen oder zu erhalten.

DM-va-value-object

Wird verwendet, um ein Attribut zu setzen oder zu erhalten, das ein IDM-Objekt wie Farbe, Zeichensatz oder Objekt ist.

DM-va-value-boolean

Wird verwendet, um Boolean-Attribute zu setzen oder zu erhalten.

DM-va-value-cardinal

Wird verwendet, um Enumeration und Cardinal Werte zu übergeben.

DM-va-value-classid

Wird verwendet, um die Klasse zu erhalten, zu der das Objekt gehört.

DM-va-value-first, DM-va-value-second

Diese beiden Elemente werden immer zusammen benutzt. In ihnen wird ein Indexwert an den Dialog Manager übergeben bzw. vom Dialog Manager an die COBOL-Funktion zurückgegeben.

DM-va-value-long-first, DM-va-value-long-second

Diese beiden Elemente werden immer zusammen benutzt. In ihnen wird ein langer Indexwert mit dem Wertebereich 0 … 65535 an den Dialog Manager übergeben bzw. vom Dialog Manager an die COBOL-Funktion zurückgegeben.

DM-va-value-attribute

Dieses Element wird belegt, wenn die ID eines benutzerdefinierten Attributs erfragt werden soll.

DM-va-value-method

Dieses Element wird zur Handhabung von im Dialog Manager implementierten Methoden verwendet.

DM-va-value-pointer

Dieses Element dient zur Übergabe von Sammlungen (Wertereferenzen) und Daten mit dem Datentyp DT-anyvalue.

Es wird nur von der COBOL-Schnittstelle für Micro Focus Visual COBOL verwendet.

DM-va-value-string-putlen

Kann gesetzt werden, um dem Dialog Manager das Ende eines Strings zu zeigen, wenn der String abweichend von den getroffenen Definitionen beendet werden soll.

DM-va-value-string-getlen

Beinhaltet die Länge des vom Dialog Manager zurückgegebenen Strings.

DM-va-value-string-size

Internes Feld, auf keinen Fall direkt zu ändern!

DM-va-value-string

Wird verwendet, um String-Attribute zu setzen oder zu erhalten. Diese Strings dürfen nicht länger als 80 Zeichen sein.

DM-va-value-string-u

In diesem Element können Strings als National Character (PIC N) übergeben werden, wenn mit Unicode-Strings (UTF-16) gearbeitet wird (nur Micro Focus Visual COBOL).

Hinweis

Vor IDM-Version A.06.01.d war die Struktur DM-ValueArray wie folgt definiert:

02 DM-ValueArray.
   03 DM-value-size          pic 9(4) binary value 16.
   03 DM-value-count         pic 9(4) binary value 0.
   03 DM-ValueRecord occurs 16 indexed by DM-valuecount.
      04 DM-va-object        pic 9(9) binary value 0.
      04 DM-va-attribute     pic 9(9) binary value 0.
      04 DM-va-indextype     pic 9(4) binary value 0.
      04 DM-va-index         pic 9(4) binary value 0.
      04 DM-va-second        pic 9(4) binary value 0.
      04 DM-va-datatype      pic 9(4) binary value 0.
      04 DM-va-long-first    pic 9(9) binary value 0.
      04 DM-va-long-scrond   pic 9(9) binary value 0.

      04 DM-va-value-object    pic 9(9) binary value 0.
      04 DM-va-value-boolean   pic 9(4) binary value 0.
      04 DM-va-value-cardinal  pic 9(4) binary value 0.
      04 DM-va-value-classid   pic XX value "??".
      04 filler                pic XX value low-values.
      04 DM-va-value-integer   pic S9(9) binary value 0.
      04 DM-va-value-first     pic 9(4) binary value 0.
      04 DM-va-value-second    pic 9(4) binary value 0.
      04 DM-va-value-attribute pic 9(9) binary value 0.
      04 DM-va-value-method    pic 9(9) binary value 0.

      04 DM-va-value-string-putlen pic 9(4) binary value 0.
      04 DM-va-value-string-getlen pic 9(4) binary value 0.
      04 DM-va-value-string-size   pic 9(4) binary value 80.
      04 DM-va-value-string  pic X(80) value low-values.
      04 filler              pic XX value low-values.

4.5.4 Datentypen in der DM-Value und DM-ValueArray Struktur

Werden über DM-Value bzw. DM-ValueArray beim Dialog Manager Werte erfragt, so setzt der DM entsprechend dem erfragten Attribut das Strukturelement DM-datatype bzw. DM-va-datatype.

Dabei gibt es folgende mögliche Belegungen:

Identifikator (ID)

COBOL-Datentyp

Bedeutung/belegtes Element

DT-accel

pic 9 (9) binary

Acceleratorreferenz. DM-value-object / DM-va-value-object

DT-anyvalue pointer Daten mit beliebigem Datentyp. DM-value-pointer / DM-va-value-pointer

DT-application

pic 9 (9) binary

Applicationreferenz. DM-value-object / DM-va-value-object.

DT-attribute

pic 9 (9) binary

Datentyp eines Attributes im Dialog Manager.

DT-boolean

pic 9 (4) binary

Boolean-Wert. DM-value-boolean / DM-va-value-boolean

DT-class

pic XX

Dieser Datentyp beschreibt die Klassen der verschiedenen Objekte. DM-value-classid / DM-va-value-classid

DT-color

pic 9 (9) binary

Farbreferenz. DM-value-object / DM-va-value-object

DT-cursor

pic 9 (9) binary

Cursorreferenz. DM-value-object / DM-va-value-object

DT-enum

pic 9 (4) binary

Stellt den Enumerationtyp im DM dar. DM-value-cardinal / DM-va-value-cardinal.

DT-event

pic 9 (4) binary

Definiert den Namen eines Ereignisses. DM-value-cardinal / DM-va-value-cardinal.

DT-font

pic 9 (9) binary

Zeichensatzreferenz.

DT-hash pointer Hash-Referenz. DM-value-pointer / DM-va-value-pointer

DT-index

pic 9 (4) binary

Dieser Datentyp beschreibt einen zweidimensionalen Index. Aus diesem Grund müssen auch immer zwei Elemente in der Value Struktur ausgewertet werden. DM-value-first DM-value-second / DM-va-value-first & DM-va-value-second.

DT-instance

pic 9 (9) binary

Instanzreferenz. DM-value-object / DM-va-value-object

DT-integer

pic 9 (9) binary

Zahl-Wert. DM-value-integer / DM-va-value-integer

DT-list pointer Listen-Referenz. DM-value-pointer / DM-va-value-pointer
DT-matrix pointer Matrix-Referenz. DM-value-pointer / DM-va-value-pointer

DT-object

pic 9 (9) binary

Objektreferenz. DM-value-object / DM-va-value-object

DT-refvec pointer Refvec-Referenz. DM-value-pointer / DM-va-value-pointer

DT-rule

pic 9 (9) binary

Regelreferenz. DM-value-object / DM-va-value-object

DT-scope

pic 9 (4) binary

Definiert, ob es sich um ein Defaultobjekt, ein Modell oder ein Objekt handelt. DM-value-cardinal / DM-va-value-cardinal

DT-string

pic X (??)

pic N (??)

Übergabe von String. DM-value-string / DM-va-value-string

Übergabe eines Unicode-String (UTF-16). DM-value-string-u / DM-va-value-string-u

DT-text

pic 9 (9) binary

Textreferenz. DM-value-object / DM-va-value-object

DT-tile

pic 9 (9) binary

Musterreferenz. DM-value-object / DM-va-value-object

DT-timer

pic 9 (9) binary

Timerreferenz. DM-value-object / DM-va-value-object

DT-undefined

keines

Datentyp ist undefiniert.

DT-var

pic 9 (9) binary

Variablenreferenz. DM-value-object / DM-va-value-object

DT-vector pointer Vektor-Referenz. DM-value-pointer / DM-va-value-pointer

DT-void

keines

Datentyp ist unbekannt oder nicht spezifiziert.

Da es beim Setzen von Attributwerten mehrere mögliche Datentypen geben kann, muss entsprechend dem verwendeten Datentyp das Element DM-datatype gesetzt werden, damit der DM den Wert aus dem entsprechenden Element herauslesen kann.

Die möglichen Werte für DT-scope sind:

1

Defaultobjekt

2

Modell

3

Instanz