6.8.47 DMcob_QueueExtEvent

Die Ausführung einer dem externen Ereignis zugeordneten Regel wird durch die Anwendung über die Schnittstellenfunktion DMcob_QueueExtEvent; vorgemerkt. "Vorgemerkt" bedeutet, dass die Regel nicht sofort ausgeführt wird, sondern dass das externe Ereignis in eine Queue eingetragen wird und entsprechend den Mechanismen für Dialogereignisse weiterverarbeitet wird.

Dieses Ereignis wird dann vom Dialog Manager über die ganz normale Ereignisverarbeitungslogik abgearbeitet und führt zur Bearbeitung einer Regel im Schema "on <object> extevent <no.>".

77  DM-eventno     pic 9(9) binary.
77  DM-objectID    pic 9(9) binary.

 

call "DMcob_QueueExtEvent" using
            DM-StdArgs
            DM-objectID
            DM-eventno
            DM-ValueArray.

Parameter

-> DM-objectID

Identifikator des Objekts, an das dieses externe Ereignis geschickt werden soll.

-> DM-eventno

Nummer des externen Ereignisses, das ausgelöst werden soll.

<-> DM-ValueArray

Dieser Parameter ist ein Array von Werten, die als Parameter für den Regelaufruf genommen werden sollen. Die Länge dieses Vektors kann dabei maximal 16 sein. Abhängig vom jeweiligen Datentyp des Parameters muss dann das entsprechende Strukturelement gefüllt werden.

-> DM-count of DM-ValueArray

In diesem Parameter muss die aktuelle Anzahl gesetzter Werte in dem Array angegeben werden. Diese Anzahl muss dabei identisch mit der bei der Regeldeklaration angegebenen Parameter im Dialogskript sein. Ist dies nicht der Fall, wird die Regel vom Dialog Manager nicht aufgerufen.

<-> DM-va-datatype (index) of DM-ValueArray

In diesem Element wird der Datentyp des Parameters mit der Nummer "index" an den Dialog Manager übergeben. Abhängig von diesem Wert muss dann das entsprechende Strukturelement gesetzt sein.

-> DM-Options of DM-StdArgs

Unbenutzt, muss 0 sein.

COBOL-Schnittstelle für Micro Focus Visual COBOL

An Stelle von DM-va-value-string kann auch DM-va-value-string-u verwendet werden, wenn mit Unicode-Texten (UTF-16) gearbeitet wird.

DM-va-value-string-getlen und DM-va-value-string-putlen geben weiterhin die Anzahl der Zeichen und nicht der Bytes an.

Rückgabewert

DM-status of DM-StdArgs

DM-error

Event konnte nicht vorgemerkt werden.

DM-success

Event konnte vorgemerkt werden.

Beispiel

Um die Regel

on MyObj extevent 4711 (string Arg1 input output, integer Arg2 input)

{

    print this;

    print Arg1;

    print Arg2;

    Arg1 := "New valid string";

}

von COBOL aus auszulösen, muss das COBOL-Programm etwa wie folgt aussehen:

    call "DMcob_PathToID" using DM-StdArgs DM-object

                        Null-Object,

                        By content "MyObj ".

    move DT-string to DM-va-datatype(1).

    move "only for testing " to DM-va-value-string(1).

    move DT-integer to DM-va-datatype(2).

    move 15 to DM-va-value-integer(2).

    move 2 to DM-value-count.

    move 0 to DM-Options.

    move 4711 to DM-eventno.

    call "DMcob_QueueExtEvent" using DM-StdArgs DM-Object

                        DM-eventno, DM-ValueArray.