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:

  • Me: Me verweist auf das intrinsic Objekt für die aktuelle Hierarchiestufe, also in einem Schriftstück ctvSstk, in einem Baustein ctvSsbs.
  • Parent: verweist auf das intrinsic Object für die Hierarchiestufe des Aufrufers.
  • ctvRoot: verweist auf das intrinsic Object für die oberste Hierarchiestufe des Schriftguts.

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:

  • Name: Name des Schriftguts(nicht änderbar).
  • UserData: Kann einen max. 32-stelligen String enthalten, der ggf. in das Objekt ZZCTV übernommen wird.
  • PrintID: Wenn gesetzt, wird diese ID bei der Erzeugung des Druckauftrags verwendet.
  • DisplayName: Der Name, unter dem das Schriftgut angezeigt werden soll. Default ist der Titel aus der Schriftgutdefinition.
  • Visible: Gibt an, ob das Schriftgut sichtbar ist.
  • Preselected: Gibt an, ob das Schriftgut vorselektiert ist.
  • StaticFile: Liefert den Dateinamen des Schriftstücks (nur für statische Schriftstücke)
  • FilenameTemplate: Zeichenfolge, die beim Drucken oder Speichern von erstelltem Schriftgut als Basis für den Dateinamen benutzt werden soll. Default ist die Eigenschaft DisplayName.
  • Selected: Gibt an, ob das Schriftgut selektiert ist (nicht änderbar).
  • Locked: Gibt an, ob das Schriftgut abwählbar ist (nicht änderbar).

Und es können bestimmte Built-In Functions dafür ausgeführt werden:

  • _Contains: Stellt fest, ob unterhalb des aktuellen Schriftguts ein Schriftgut mit dem angegebenen Namen eingebunden wurde
  • _GetType: Liefert den Typ des Schriftguts, welches <level> Ebenen über dem aktuellen Schriftgut liegt. Wenn _Contains ohne Argument aufgerufen wird, wird der Typ des aktuellen Schriftguts zurückgegeben. Falls es nicht soviel Ebenen oberhalb des aktuellen Schriftguts gibt, wird ein Leerstring zurückgegeben.
  • Register: Ermöglicht, für ein Schriftgut zu einem späteren Zeitpunkt die Seitenzahl anhand des angegebenen Namens abzufragen.
Intrinsisches Objekt für Textbausteine

ctvText enthält Eigenschaften der Textkonserven eines TextBausteins:

  • IsReadonly: Gibt an oder legt fest, ob der Textbaustein durch den Benutzer editierbar ist
  • Count: Liefert die Anzahl der Textkonserven in dem Baustein
  • IsValid(<name>): Gibt an, ob die namentlich genannte Textkonserve existiert
  • Name(<index>): Liefert den Namen der Textkonserve mit dem angegebenen Index
  • RTF: Liefert oder setzt den Text für den Textbaustein im RTF-Format. Wenn das RTF zur Laufzeit im Pseudocode gesetzt wird, wird der Baustein danach so behandelt, als wäre der Text vom Benutzer editiert worden.
  • OpenXML: Liefert oder setzt den Text für den Textbaustein im OpenXML-Format. Wenn das OpenXML zur Laufzeit im Pseudocode gesetzt wird, wird der Baustein danach so behandelt, als wäre der Text vom Benutzer editiert worden. Bitte beachten, dass OpenXML ein binäres Format ist, und demzufolge nicht als Zeichenfolge im Pseudocode verwendet werden kann. Nur TAA-Blob-Objektfelder können verwendet werden.
  • Selected: Liefert oder setzt den Namen der aktuell selektierten Textkonserve in dem Textbaustein:
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
  • NoText1): Gibt an, dass für den Textbaustein in einer Situation keine Textkonserve ausgegeben werden soll.
 ctvText.NoText = true    
  • ErrorText2): Hiermit kann ein Text bestimmt werden, der - weil z.B. eine Textkonserve für die Situation nicht verfügbar ist - anstelle des Default-Texts ausgegeben werden soll. Der Fehlertext erscheint im Dokument in fett und rot, allerdings nur für Nicht-EndUser. Für EndUser wirkt ErrorText wie NoText, es wird kein Text ausgegeben.
    Der Fehlertext wird unverändert ausgegeben, d.h. ohne Ersetzung von Platzhaltern usw.
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:

  • GUID: Liefert die eindeutige ID (GUID) des aktuellen Geschäftsvorfalls
  • ID: Liefert die ID des aktuellen Geschäftsvorfalls
  • PropCount([<name>])gibt an, wie viele Eigenschaften mit dem Namen an dem Gevo gesetzt sind
  • Prop(<name>[,<index>]): liefert oder setzt den Wert der Eigenschaft mit dem Namen als Zeichenfolge. Wenn mehrere Eigenschaften mit dem Namen vorhanden sind, kann ein Index zusätzlich übergeben werden.
  • PropName(<index>): Liefert den Namen der Eigenschaft mit dem angegebenen Index
  • PropNum(<name>): Liefert oder setzt den Wert der Eigenschaft mit dem Namen als numerischen Wert.

ctvArbg: Enthält Eigenschaften des Arbeitsgangs

  • ID: Liefert die ID des aktuellen Arbeitsganges
  • Name: Liefert den Namen des aktuellen Arbeitsganges
  • RespOE: Liefert den aktuellen Arbeitsgangverantwortlichen
  • Title: Liefert die Umschreibung des aktuellen Arbeitsganges

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:

  • VisibleInDialog: Gibt an, ob der Platzhalter im CTV-Dialog sichtbar sein soll
  • ReadonlyInDialog: Gibt an, ob der Platzhalter im CTV-Dialog durch den Benutzer geändert werden darf
  • AddValue: Fügt er Variablen einen Wert hinzu. Der Benutzer kann im CTV-Dialog aus den zugewiesenen Werten einen auswählen.
  • FixedValues: Gibt an, dass der Benutzer im CTV-Dialog einen Wert auswählen, aber kein neuen Wert eingeben darf (z.B. bei aus Schlüsseltabelle geladenen Werten).
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:

  • DisplayName: Der Name, der für den Platzhalter im CTV-Dialog angezeigt werden soll
  • Visible: Gibt an, ob der Platzhalter im CTV-Dialog sichtbar sein soll
  • Readonly: Gibt an, ob der Platzhalter im CTV-Dialog durch den Benutzer geändert werden darf
  • Mandatory: Gibt an, ob für den Platzhalter ein Wert angegeben sein muss.
  • Value: Setzt oder liefert den Wert für den Platzhalter.
  • Caption: Setzt oder liefert die Umschreibung für den Platzhalter; der Wert wird im CTV-Dialog als Tooltip angezeigt.
  • FixedValues: Gibt an, dass der Benutzer im CTV-Dialog einen Wert auswählen, aber kein neuen Wert eingeben darf.
  • AddValue: Fügt dem Platzhalter einen Wert hinzu. Der Benutzer kann im CTV-Dialog aus den Werten einen auswählen.
  • URL: Gibt an, dass der Platzhalter ein Hyperlink ist. Das Ziel des Hyperlinks wird mit dieser Eigenschaft gesetzt.

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
ctv:pseudocode:obj · Zuletzt geändert: 28.02.2018 13:15

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum