Inhaltsverzeichnis

Variable

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.

Lokale Variable

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).

TAA-Objekte

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

Felder aus TAA-Objekten

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

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.

Vordefinierte Konstante

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

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

Spezielle Objekte und Variablen in CTV

Intrinsische Objekte

Sogenannte „intrinsische Objekte“ sind Objekte, die zur Laufzeit einer CTV-Anwendung immer vorhanden sind, und denen bestimmte Eigenschaften zugeordnet sind.

Intrinsische Objekte zu Schriftgut

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:

Intrinsisches Objekt für Textbausteine

ctvText enthält Eigenschaften der Textkonserven eines TextBausteins:

sample.ps
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    
sample.ps
if not ctvtext.IsValid(txtkonserve) then
    ctvText.ErrorText = "Text " + txtkonserve + " fehlt!"
else
    ctvtext.Selected = txtkonserve
end if
Intrinsische Objekte für den Kontext

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

CTV-Variable

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

Eigenschaften von CTV-Variablen

CTV-Variablen (SGPV) haben folgende Eigenschaften, die im Pseudocode bestückt oder abgefragt werden können:

sample.cs
me.Abs-Mail-Adr.ADDVALUE("Siegfried-Lenz-Allee 9")
me.Abs-Mail-Adr.ADDVALUE("Konrad-Adenauer-Str. 1")
me.Abs-Mail-Adr.FIXEDVALUES = true

Lokale Platzhalter

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:

briefkopf.ps
&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& €

Eigenschaften von Platzhaltern

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:

sample.ps
ALTERVS.DisplayName = "Alter des Versicherungsnehmers"
ALTERVS.IsMandatory = true
ALTERVS.IsReadonly = false
ALTERVS.IsVisible = true

Schriftgut-globaler Platzhalter

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.

1) , 2)
ab V8.18