Der Pseudocode unterscheidet zwischen verschiedenen Arten von Variablen, die nachstehend beschrieben sind.
Wenn in einer Anweisung nur eine bestimmte Art von Variablen zugelassen ist, so wird dies entsprechend angegeben.
Bitte beachten Sie, dass der Pseudocode-Interpreter typenlos arbeitet, d.h. es wird grundsätzlich nicht zwischen numerischen und nicht-numerischen Variablen unterschieden. Das bedeutet, dass Sie z.B. mit einer Variablen, der Sie eine numerische Konstante als String zuweisen, trotzdem anschließend rechnen können. Es bedeutet aber auch, dass das Laufzeitsystem nicht überprüft, ob Sie einer Variablen, mit der Sie anschließend rechnen möchten, auch wirklich einen numerischen Wert zugewiesen haben. Wenn bei Berechnungen die Konvertierung des Variableninhalts in einen numerischen Wert nicht möglich ist, führt dies zu einer Laufzeitwarnung, und der Wert der Variablen wird mit 0 angenommen.
Eine lokale Variable ist eine Variable, die Sie lokal in einem Pseudocode-Block anlegen, und die Ihnen nur innerhalb des aktuellen Moduls zur Verfügung steht.
Der Name einer solchen Variablen muss mindestens ein nicht-numerisches Zeichen enthalten. Er kann keine Leerzeichen enthalten. Außerdem sollte der Name nicht mit einem Unterstrich („_“) anfangen, da das Laufzeitsystem ihn sonst für den Namen einer Built-In Function halten würde.
Eine Variable mit reserviertem Namen wird durch ein „@“ vor dem Namen gekennzeichnet (in CTV nicht relevant).
Im Pseudocode können Sie auf die in der Modulschnittstelle definierten Parameter- und globalen Objekte sowie auf die definierten lokalen Objekte zugreifen.
Ein Objekt wird einfach durch seinen Namen referenziert, z.B.
GET FIRST MyObj
Sie können im Pseudocode den Inhalt einzelner Felder aus TAA-Objekten abfragen und setzen. Ein Feld aus einem Objekt wird referenziert durch
<obj>.<feldname>.
Wenn in einer Anweisung die Angabe eines Feldnamens ohne vorangestellten Objektnamen notwendig ist, wird dies angegeben durch
<feldname> oder <feldname-1> bis <feldname-n>.
IF MyObj.Abc-Mytext = "" THEN ... SORT MyObj ON FIELD MyNumber ...
Konstante sind entweder rein numerische Werte oder Zeichenfolgen, die zwischen Hochkommata stehen.
Numerische Konstante müssen, wenn sie Dezimalstellen enthalten, mit Punkt als Dezimaltrennzeichen angegeben werden, z.B.
0.5 (für 1/2) 3.1415 (für Pi)
Alphanumerische Konstante müssen in Hochkommata angegeben werden, damit sie nicht als Variablennamen interpretiert werden, z.B.
"zulässiger Wert" "7,25 %"
Es ist auch möglich, Sonderzeichen in Konstanten aufzunehmen. Eine gutes Beispiel dafür ist der Wunsch, Textteile in Anführungszeichen zu setzen, wobei die Anführungszeichen am Anfang unten, am Ende oben stehen sollen, also
"dies ist ein „Zitat″ "
Solche Anführungszeichen (und andere Sonderzeichen) können entweder durch Verwendung der Tastenkombinationen dafür erfasst werden, soweit diese bekannt sind (z.B. ALT+0132 für doppeltes Anführungszeichen unten, ALT+0147 für doppeltes linkes Anführungszeichen, ALT+0148 für doppeltes rechtes Anführungszeichen), oder über die Zeichentabelle (Windows-Menü Zubehör→Systemprogramme), wo Sie entweder das Zeichen kopieren oder den Tastaturcode ablesen können.
Bestimmte Sonderzeichen können auch über die Built-In Function _StrCode eingefügt werden.
Im Pseudocode sind folgende Konstanten vordefiniert:
TRUE FALSE
Diese können in Ausdrücken als Operanden verwendet werden, z.B.
Res = FALSE IF ... THEN res = TRUE END If If Res THEN...
Workflow-Properties sind vordefinierte Eigenschaften für Geschäftsvorfälle oder Arbeitsgänge. Ihre Nutzung wird in der Bausteinschnittstelle festgelegt. Es können nur solche Properties referenziert werden, die in der Schnittstelle nicht mit der Rolle NOP angegeben sind. Um eine Property verändern zu können, muss sie in der Schnittstelle mit Rolle MOD angegeben sein.
Um eine Workflow-Property anzusprechen, schreiben Sie
für Geschäftsvorfall-Eigenschaften:
Gevo-Property <name>
für Arbeitsgang-Eigenschaften:
Arbg-Property <name>
Beispiel:
IF GEVO-PROPERTY Vermittler :=: "meier" THEN GEVO-PROPERTY Vermittler = MyObj.Vermittler END IF
Sogenannte „intrinsische Objekte“ sind Objekte, die zur Laufzeit einer CTV-Anwendung immer vorhanden sind, und denen bestimmte Eigenschaften zugeordnet sind.
Pro Schriftgut-Typ gibt es ein intrinsisches Objekt, also ctvSstk, ctvSstz, ctvSsbg, ctvSsbs usw.
Außerdem gibt es:
Diesen intrinsischen Objekten sind als Eigenschaften die in der EDB definierten CTV-Variablen (SGPV) für den betreffenden Typ zugeordnet.
Zusätzlich haben diese Objekte (z.B. ctvSstk, ctvRoot, me) folgende Eigenschaften:
Und es können bestimmte Built-In Functions dafür ausgeführt werden:
ctvText enthält Eigenschaften der Textkonserven eines TextBausteins:
ctvText.Selected = "Mitfreundlichengruessen" IF ctvText.IsValid("Mitfreundlichengruessen") = FALSE THEN Anzahl = ctvText.Count DO Suchname VARY ix FROM 1 BY 1 TO Anzahl IF ctvText.name(ix) = "standard" THEN ctvText.Selected = ctvText.Name(ix) END IF END Suchname END IF selText = ctvText.Selected
ctvText.NoText = true
if not ctvtext.IsValid(txtkonserve) then ctvText.ErrorText = "Text " + txtkonserve + " fehlt!" else ctvtext.Selected = txtkonserve end if
Folgende intrinsischen Objekte für den Kontext sind bekannt:
ctvEngine: Ermöglicht den Aufruf folgender Funktionen:
ctvGevo: Enthält Eigenschaften des GEVO:
ctvArbg: Enthält Eigenschaften des Arbeitsgangs
Eine CTV-Variable ist eine schriftgutbezogene Variable, die in der Entwicklungsdatenbank definiert ist (Tabelle SGPV - „Schriftgut Predefined Variable“). Jede CTV-Variable ist einem Schriftgut-Typ bzw. einer Schriftgut-Hierarchiestufe als Eigenschaft zugeordnet, z.B. einem SSTK oder SSTZ (vgl. Intrinsic Objects). In der Schnittstelle des CTV-Moduls wird festgelegt, ob eine CTV-Variable in dem CTV-Modul selbst oder untergeordneten Modulen referenziert oder verändert werden darf.
Eine Referenz auf eine CTV-Variable sieht wie folgt aus:
CTV<Schriftguttyp>.<Name>
An Stelle von „CTV<Schriftguttyp>“ kann auch stehen „me“ - für das aktuelle Schriftgutmodul - oder „parent“ - für das übergeordnete Schriftgutmodul. Wenn nichts angegeben ist, wird „me“ angenommen. Beispiele:
Me.Ctv-Sort-Datn-4 Ctv-Sort-Datn-4 ctvSstk.Brf-Bes-Anr ctvSstz.Anz-Dup Parent.Anz-Dup
Wenn in einer Schriftgutstruktur mehrere Bestandteile des gleichen Typs vorkommen, z.B. mehrere Schriftstücke (SSTK), mehrere Textbausteine (SSBS), und diese derselben CTV-Variablen unterschiedliche Werte zuweisen, so werden diese Werte zur Laufzeit gesammelt und dem Benutzer im CTV-Dialog zur Auswahl angeboten.
S. auch Regeln zur Zuweisung und Vererbung von Werten für CTV-Variablen
CTV-Variablen (SGPV) haben folgende Eigenschaften, die im Pseudocode bestückt oder abgefragt werden können:
me.Abs-Mail-Adr.ADDVALUE("Siegfried-Lenz-Allee 9") me.Abs-Mail-Adr.ADDVALUE("Konrad-Adenauer-Str. 1") me.Abs-Mail-Adr.FIXEDVALUES = true
Ein lokaler Platzhalter oder Textplatzhalter ist ein Name, der in dem Bausteintext definiert ist und für den bei Auswertung des Schriftguts ein Inhalt einer Variablen oder eines Objekts eingesetzt werden soll.
Die Definition des Platzhalters im Bausteintext wird in folgendem Format dargestellt:
&<Name>&
oder, mit Angabe einer Formatierung,
&<Name>#<Format>&
Für die Erfassung von Platzhaltern in Bausteintexten gelten unterschiedliche Verfahren, abhängig davon, ob der Text in RTF oder OpenXML bearbeitet wird.
Der im Bausteintext definierte Platzhalter ist im Pseudocode des Bausteins über diesen Namen direkt ansprechbar. Es ist im Code kein Unterschied erkennbar zwischen der Verwendung einer lokalen Variablen oder eines Platzhalters, und die Platzhalter werden ebenso wie die lokalen Variablen im Dialog „Bekannte Variablen“ aufgelistet.
Beispiel für einen Briefkopf mit Platzhaltern:
&Adresse1& &Adresse2& &Adresse3& &Adresse4& Laguna di Mar, den &Datum#D1& Unser Zeichen: &Zeichen& &Xinfo& Sehr &geehrte& &Anrede&, vielen Dank für Ihr Interesse an unserer Ferienanlage. Anbei übersenden wir Ihnen unsere Prospekte sowie die aktuellen Preislisten für Camping, Ferienwohnungen sowie unsere Hotelanlage. Falls Sie für die &AnzSommerMonate#Z1& Sommermonate eine Reservierung vornehmen möchten, senden Sie uns bitte das beigefügte Formular bis spätestens &ResDatum#D1& zu. Stellplätze für Wohnwagen kosten zur Zeit In Kategorie A(über 100 qm): &MaxPlatz& € In Kategorie B (über 80 qm): &MidPlatz#B1& € In Kategorie C (kleiner): &MinPlatz#B2& €
Textplatzhalter haben folgende Eigenschaften, die im Pseudocode bestückt oder abgefragt werden können:
Um z.B. zu erzwingen, dass der Benutzer im CTV-Dialog einen Wert für einen Platzhalter eingibt:
ALTERVS.DisplayName = "Alter des Versicherungsnehmers" ALTERVS.IsMandatory = true ALTERVS.IsReadonly = false ALTERVS.IsVisible = true
Eine Schriftgut-globaler Platzhalter (SGGP) ist in allen Teilen eines Schriftguts bekannt und in der Entwicklungsdatenbank definiert (Tabelle SGGP - „Schriftgut-globaler Platzhalter“).
Globale Platzhalter können nur über die EDIT- bzw. DISPLAY-Anweisung referenziert werden. Durch diese Anweisungen wird eine Verknüpfung zwischen einem Platzhalter und einen Globalen Platzhalter gelegt.