35 record

Mit Hilfe des records können beliebige Strukturen in der Regelsprache gebildet werden.

Diese records können direkt als Kinder des Dialoges (global verfügbar) oder als Kinder von beliebigen anderen Objekten definiert werden.

record-Objekte können auch bei Modellen definiert und an Instanzen mit vererbt werden. records selber können auch als Modell definiert und instanziiert werden.

Ein record kann also sowohl benutzerdefinierte Attribute als auch Unterrecords beinhalten.

Definition

{ export | reexport } { model } record <Bezeichner>
{
  <Hierarchieattribute>
  <Objektspezifische Attribute>
  [ <Definition von benutzerdefiniertem Attribut> ; ]
  [ { export | reexport } record <Bezeichner> <record-Definition> ]
}

Ereignisse

keine

Kinder

document

record

transformer

Vater

alle Objektarten

Menü

keins

35.1 Attribute

.class

.configurable

.control

.dialog

.document[integer]

.external

.external[integer]

.firstrecord

.groupbox

.index

.itemorder

.label

.lastrecord

.layoutbox

.member[integer]

.membercount

.model

.notepage

.parent

.record[integer]

.recordcount

.scope

.toolbar

.window

35.2 Spezifische Attribute

Attribut Beschreibung

.configurable

Definiert, ob ein Record konfigurierbar sein soll, d.h. in der mit DM_LoadProfile geladenen Konfigurationsdatei gesetzt werden darf.

.itemorder

Gibt die Definitionsreihenfolge für Attribute und Records innerhalb von Records an.

.member[integer]

I-tes benutzerdefiniertes Attribut des Objekts.

.membercount

Gesamtzahl der benutzerdefinierten Attribute des Objekts.

35.3 Beispiel

record Person

{

  string Name;

  string Vorname;

  string Wohnort;

}

function c void PutPerson (integer, record Person input);

function c void GetPerson (integer, record Person output);

Hiermit definieren Sie eine Struktur mit drei Elementen und zwei Funktionen, die diesen Record als Parameter erhalten.

Record mit Kindrecord

record Daten

{

  string Name;

  integer Zustand;

 

  record Anfangswerte

  {

    integer Position;

    integer Alphawert;

  }

  record Endergebnis

  {

    boolean OK;

    integer BetaWert;

    integer GammaWert;

  }

}

Abfrage der Definitionsreihenfolge in einem Record

record R

{

  string Name;

  record Kind1

  {

    integer Nummer;

    boolean An;

  }

  boolean Aus;

}

 

print R.itemorder;  // => "ARA"

35.4 Einbindung in Anwendung

Um Funktionen für Dialoge mit Records mit einer Anwendung versehen zu können, müssen vom DM generierte C-Module übersetzt und dazugebunden werden. Die Generierung dieser Module erfolgt durch Aufruf der Simulation mit der Option +writetrampolin:

idm +writetrampolin <outfile> <dialogskript>

Dieses Statement generiert aus einem Dialogskript die notwendigen Module zum Aufruf von Funktionen. Je nach Art der Funktionen, die solche Records verwenden, werden die entsprechenden Header-Dateien (C und/oder COBOL) erzeugt.

Werden solche Strukturen im Dialog Manager-Objekt application verwendet, wird also der verteilte Dialog Manager eingesetzt, muss noch zusätzlich die Anwendung angegeben werden, für die die Dateien generiert werden sollen.

idm +writetrampolin <contfile>

  +application <ApplicationName>

  <dialogskript>