Modul VAR neu
Das Modul Var sammelt neben den Variablen auch die grundlegenden Prozeduren und Funktionen.
Inhaltsverzeichnis
Variable
#var_set
#setvar setzt den Wert einer Variablen
Hinweis: Variable sind global, auf sie kann auch in Sub-Kommandos zugegriffen werden. Values sind dagegen lokal.
Parameter
- cnd (condition) - Die Variable wird nur dann gesetzt, wenn cnd=Y ist; Funktionen werden ersetzt
- ie - "if empty", Wenn der Wert von z/zr/zn leer ist, dann wird ersatzweise der Wert von ie verwendet; ähnlich NVL bei SQL
- n - Name der Variablen, Groß- und Kleinschreibung wird nicht unterschieden, zwingend erforderlich
- r (rights) - Die Variable wird nur dann gesetzt, wenn das Recht write vorliegt; default ist frm. Liegt das Recht read vor, so wird statt dem Inhalt von z der Inhalt von zr gesetzt. Liegt kein Recht vor, dann wird der Inhalt von zn gesetzt
- z - Wert der Variablen, Funktionen werden ersetzt, default ist ein leerer String
- zn - Wert der Variablen, wenn das Recht r nicht vorliegt
- zr - Wert der Variablen, wenn das Recht r nur ein leserecht ist
Beispiele
#var_set n=test z="Hello world" #var_set n=test2 z=$GUID() #var_set n=edt z=$EDT(edt1) ie=42 #var_set n=_page_kunde_adressänderung_ro z=N zn=Y zr=Y r=kundenservice
#var_setempty
#var_setempty setzt den Wert einer Variablen, sofern sie (noch) leer ist.
(Besteht der Variableninhalt aus Leerzeichen, gilt die Variable auch als leer.)
Parameter
- cnd (condition) - Die Variable wird nur dann gesetzt, wenn cnd=Y ist; Funktionen werden ersetzt
- ie - "if empty", Wenn der Wert von z/zr/zn leer ist, dann wird ersatzweise der Wert von ie verwendet; ähnlich NVL bei SQL
- n - Name der Variablen, Groß- und Kleinschreibung wird nicht unterschieden, zwingend erforderlich
- r (rights) - Die Variable wird nur dann gesetzt, wenn das Recht write vorliegt; default ist frm. Liegt das Recht read vor, so wird statt dem Inhalt von z der Inhalt von zr gesetzt. Liegt kein Recht vor, dann wird der Inhalt von zn gesetzt
- z - Wert der Variablen, Funktionen werden ersetzt, default ist ein leerer String
- zn - Wert der Variablen, wenn das Recht r nicht vorliegt
- zr - Wert der Variablen, wenn das Recht r nur ein leserecht ist
Beispiele
#var_setempty n=test z="Hello world" #var_setempty n=test2 z=$GUID() #var_setempty n=edt z=$EDT(edt1) ie=42
#var_add
#var_add fügt einer Variablen einen Wert hinzu.
Parameter
- cnd (condition) - Die Variable wird nur dann gesetzt, wenn cnd=Y ist; Funktionen werden ersetzt
- ie - "if empty", Wenn der Wert von z/zr/zn leer ist, dann wird ersatzweise der Wert von ie verwendet; ähnlich NVL bei SQL
- n - Name der Variablen, Groß- und Kleinschreibung wird nicht unterschieden, zwingend erforderlich
- r (rights) - Die Variable wird nur dann gesetzt, wenn das Recht write vorliegt; default ist frm.
- y -Typ der Operation; default text
- curr - Es wird eine Fixkomma-Addition vorgenommen
- date - Es wird dem Datum eine Anzahl von Tagen hinzugefügt
- datetime - Es wird dem Datum eine Anzahl von Tagen hinzugefügt, Ergebnis als datetime
- int - Es wird eine Ganzzahl-Addition vorgenommen
- text - Der Wert wird als Text hinzugefügt
- z - Wert, welcher der Variablen hinzugefügt wird, Funktionen werden ersetzt, default ist ein leerer String oder eine 0
Beispiel
#var_set n=test z=$NOW() #var_add n=test z=1 y=datetime #cout c=$VAR(test)
#var_log
Schreibt den Inhalt aller Variablen in das Debug-Log.
Wird nur zur Fehlersuche verwendet.
Parameter
(keine)
Beispiel
#var_log
$VAR()
Mit der Funktion $VAR() wird auf den Inhalt der Variable zugegriffen.
Parameter
- Name der Variable
- optional: Der Wert wird vor oder nach der Rückgabe als Funktionsergebnis verändert; nur für ganzzahlige Werte
- ib ("increment before") - Der Wert wird vor der Rückgabe um eins erhöht
- db ("decrement before") - Der Wert wird vor der Rückgabe um eins verringert
- ia ("increment after") - Der Wert wird nach der Rückgabe um eins erhöht
- da ("decrement after") - Der Wert wird nach der Rückgabe um eins verringert
Beispiele
#message c=$VAR(test) #var_set n=neuer_wert z=$VAR(wert) ie=$VAR(alternativwert) #execsql k_lfdnr=$VAR(lfdnr,ib)
Kommandos
(Primär- und Sub) Kommandos sind üblicherweise benannt und werden im Code-Dialog eingegeben.
Es besteht jedoch auch die Möglichkeit, lokale Kommandos innerhalb eines anderen Kommandos zu definieren. Diese Kommandos haben statt eines Kommando-Namens dann dann eine Kommando-Nummer.
Lokale Kommandos werden üblicherweise für folgende Zwecke verwendet:
- Bei der Verwendung von xlive werden bisweilen Prozeduren eingesetzt, die ihrerseits ein Kommando aufrufen (z.B. #sql_open). Wenn dieses Kommando nichts bereits existiert, kann es nur als lokales Kommando erstellt werden.
- Wenn das auszuführende Kommando auf derselben Seite stehen soll wie die aufrufende Prozedur.
Siehe als Beispiel: User-Tabelle als CSV-Datei exportieren
#cmd
#cmd fügt dem Kommando eine Zeile hinzu
Es handelt sich dabei um eine nummerierte Prozedur. #cmd fügt dem ersten Kommando eine Zeile hinzu, #cmd2 fügt dem zweiten Kommando eine Zeile hinzu, und so weiter.
Parameter
#cmd hat keine benannten Parameter. Die ganze Zeile nach dem #cmd und dem trennenden Leerzeichen wird hinzugefügt.
Beispiel
#cmd3 #text $DATA(n,login);$DATA(n,shortname);$DATA(n,firstname);$DATA(n,lastname);$DATA(n,userid);
Siehe auch User-Tabelle als CSV-Datei exportieren
#cmd_clear
#cmd_clear löscht ein Kommando
Es handelt sich dabei um eine nummerierte Prozedur. #cmd_clear löscht das erste Kommando, #cmd_clear2 löscht das zweite Kommando, und so weiter.
Parameter
(keine)
Folgen dem #cmd_clear Zeichen, so werden die dem gerade gelöschten Kommando hinzugefügt. Auf diese Weise lässt sich etwas prägnanter formulieren.
Beispiele
#cmd_clear3 #cmd_clear #grd_add i=grid f_logtext="Kunde angerufen und nicht erreicht."
#cmd_clearall
#cmd_clearall löscht alle Kommandos
Parameter
(keine)
Beispiel
#cmd_clearall
CSV
Die CSV-Routinen werden verwendet, um CSV-Dateien einzulesen und zu verarbeiten.
#csv_open
#csv_open öffnet eine CSV-Datei
Es handelt sich dabei um eine nummerierte Prozedur. #csv_open öffnet die erste CSV-Datei, #csv_open2 öffnet die zweite CSV-Datei, und so weiter.
Parameter
- ber - wenn Y, werden die Zeilenumbrüche innerhalb von Feldern durch Leerzeichen ersetzt. Die Felder müssen dabei in doppelten Anführungszeichen eingeschlossen sein.
- fn - ("Filename") Dateiname der CSV-Datei
- txt ("Text") - alternativ zum Dateinamen fn die Nummer eines Textes, der als CSV-Datei verwendet werden soll.
Beispiel
#csv_open fn=c:\temp\text.csv
#csv_line
#csv_line geht zeilenweise durch die CSV-Datei
Es handelt sich dabei um eine nummerierte Prozedur. #csv_line geht durch die erste CSV-Datei, #csv_line2 geht durch die zweite CSV-Datei, und so weiter.
Parameter
- er ("each row") - Kommando, das für jede Zeile der CSV-Datei ausgeführt wird.
- ert ("each row transaction") - Für jede Ausführung des in er spezifizierten Kommandos wird eine eigene Datenbank-Transaktion ausgeführt.
- hhr ("has header row") - Wenn Y, ist die erste Zeile der CSV-Datei eine Überschriften-Zeile; für diese wird das in er spezifizierten Kommando nicht ausgeführt, dafür können Spaltenbezeichner für den Zugriff auf die einzelnen Spalten verwendet werden.
- m ("maximum") - Maximale Anzahl der Zeilen, die verarbeitet wird. Wird gerne bei der Entwicklung verwendet, um die Bearbeitungsgeschwindigkeit zu erhöhen.
- sep ("separator") - Trennzeichen zwichen den Spalten, default ist das Semikolon
Beispiel
#csv_line er=test_csv_line hhr=Y m=3
#csv_paste
Übernimmt eine CSV-Datei aus der Zwischenablage. Auf die Werte kann mit $SEPLINE() zugegriffen werden, siehe Eine Tabelle in der Zwischenablage in ein PDF-Dokument wandeln
Multi-Row
Mit dem Multi-Row-Modus können Daten eingelesen werden, die in einer Zeile mehrere gleichartige Werte haben.
Daten, die im Single-Row-Modus wie folgt aussehen:
01.01.2020 4465 01.01.2020 8574 01.01.2020 3456 02.01.2020 5467 03.01.2020 2436 03.01.2020 6578 03.01.2020 3456 03.01.2020 6578 03.01.2020 4457 03.01.2020 7658
Würden im Multi-Row-Modus wie folgt aussehen (und könnten auch so eingelesen werden):
01.01.2020 4465 8574 3456 02.01.2020 5467 03.01.2020 2436 6578 3456 6578 4457 7658
Parameter
- er ("each row") - Kommando, das für jede Zeile der CSV-Datei ausgeführt wird.
- ern - ("each row no") Das Kommando, das für jede Zeile der Datenmenge aufgerufen wird. Funktionen werden nicht ersetzt. Wenn ern einen Wert hat, bleibt er unberücksichtigt. Üblicherweise wird er verwendet.
- ert ("each row transaction") - Für jede Ausführung des in er spezifizierten Kommandos wird eine eigene Datenbank-Transaktion ausgeführt.
- hhr ("has header row") - Wenn Y, ist die erste Zeile der CSV-Datei eine Überschriften-Zeile; für diese wird das in er spezifizierten Kommando nicht ausgeführt, dafür können Spaltenbezeichner für den Zugriff auf die einzelnen Spalten verwendet werden.
- mrs ("multi row start") - Erste Spalte für den Multi-Row-Bereich
- sep ("separator") - Trennzeichen zwichen den Spalten, default ist das Tabulatorzeichen
- y - Typ; default s
- m - multi; siehe Abschnitt Multi-Row
- s - single; die CSV-Datei wird Zeile für Zeile eingelesen
Beispiele
#csv_paste er=imp_line hhr=Y #csv_paste er=imp_line y=m mrs=1
$CSV()
$CSV() greift auf einen Feldinhalt der aktuellen CSV-Zeile zu.
Parameter
- Nummer der CSV-Datei
- Name der Spalte oder 0-relative Spaltennummer. Name der Spalte setzt voraus, dass bei #csv_line der Parameter hhr gleich Y ist.
Beispiel
#setvar n=test z=$CSV(1,0)
Hier im Beispiel wird in der ersten CSV-Datei (#csv_open) auf die erste Spalte (0, da 0-relativ) zugegriffen.
Text
#text
#text fügt dem Text eine Zeile hinzu
Es handelt sich dabei um eine nummerierte Prozedur. #text fügt dem ersten Text eine Zeile hinzu, #text2 fügt dem zweiten Text eine Zeile hinzu, und so weiter.
Parameter
#text hat keine benannten Parameter. Die ganze Zeile nach dem #text und dem trennenden Leerzeichen wird hinzugefügt.
Funktionen werden ersetzt.
Beispiel
#text Zeile 1 #text Zeile 2 #text Und jetzt noch eine GUID: $GUID() #text Der folgende Text kommt in Großbuchstaben: $UPP(hello world)
#textn
#textn fügt dem Text eine Zeile hinzu. Im Unterschied zu #text werden dabei keine Funktionen ersetzt.
Es handelt sich dabei um eine nummerierte Prozedur. #textn fügt dem ersten Text eine Zeile hinzu, #text2n fügt dem zweiten Text eine Zeile hinzu, und so weiter.
Parameter
#text hat keine benannten Parameter. Die ganze Zeile nach dem #textn und dem trennenden Leerzeichen wird hinzugefügt.
Funktionen werden dabei nicht ersetzt.
Beispiel
#textn Zeile 1 #textn Zeile 2
#text_clear
#text_clear löscht einen Text
Es handelt sich dabei um eine nummerierte Prozedur. #text_clear löscht den ersten Text, #text_clear2 löscht den zweiten Text, und so weiter.
Parameter
(keine)
Folgen dem #text_clear Zeichen, so werden die dem gerade gelöschten Text hinzugefügt. Auf diese Weise lässt sich etwas prägnanter formulieren.
Beispiel
#text_clear7 #text7 Zeile 1 #text7 Zeile 2
Das vorangestellt #text_clear stellt sicher, dass Text7 leer ist. Alternativ könnte man formulieren:
#text_clear7 Zeile 1 #text7 Zeile 2
#text_save
#text_save speichert einen Text in einer Datei.
Es handelt sich dabei um eine nummerierte Prozedur. #text_save speichert den ersten Text, #text_save2 speichert den zweiten Text, und so weiter.
Parameter
- bom ("Byte order mark") - Wenn Y, dann wird die Datei mit BOM geschrieben; default Y
- e ("encoding") - Encoding der zu speichernden Datei, zulässig sind ansi, ascii, utf7, utf8, unicode und bigendianunicode. Bei leerem oder nicht gesetzten Parameter wird das Default-Encoding verwendet (Bei Windows ansi, sonst utf8).
- fn - Dateiname, unter dem die Datei gespeichert wird. Bestehende Dateien werden überschrieben, sofern das Betriebssystem das nicht verhindert (z.B, weil die Datei gerade geöffnet ist)
- o ("open") - Öffnet die gespeicherte Datei gleich anschließend.
- sort - Wenn Y, dann wird die Datei vor dem Speichern sortiert.
Beispiel
#text Hello world #text_save fn=$DIR(userroot)hello_world.txt #text_save fn=c:\temp\export_vert_export.prepared_.csv e=utf8 bom=N
#text_open
#text_open öffnet einen Text aus einer Datei, der bisherige Inhalt der Datei wird überschrieben.
Es handelt sich dabei um eine nummerierte Prozedur. #text_open öffnet den ersten Text, #text_open2 öffnet den zweiten Text, und so weiter.
Parameter
- e ("encoding") - Encoding der zu öffnenden Datei, zulässig sind ansi, ascii, utf7, utf8, unicode und bigendianunicode. Bei leerem oder nicht gesetzten Parameter wird das Default-Encoding verwendet (Bei Windows ansi, sonst utf8).
- fn - Dateiname der Datei, die geöffnet wird.
Beispiel
#text_open fn=$DIR(userroot)test.txt #text Eine weitere Zeile, $GUID() #text_save fn=$DIR(userroot)test.txt
#text_props
#text_props stellt Eigenschaften des Textes ein.
Es handelt sich dabei um eine nummerierte Prozedur. #text_props bezieht sich auf den ersten Text, #text_props2 bezieht sich auf den zweiten Text, und so weiter.
Parameter
- dub ("duplicates") - Verhalten einer sortierten Liste bezüglich Dubletten
- acc ("accept") - Dubletten werden akzeptiert
- err ("error") - Dubletten führen zu Fehlern
- ign ("ignore) - Dubletten werden ignoriert
- srt ("sorted") - Wenn ja, dann ist die Liste sortiert
Beispiel
#text_props srt=Y dup=ign
$TEXT()
Mit der Funktion $TEXT() wird auf den Inhalt des Textes zugegriffen.
Parameter
- Nummer des Textes
Beispiel
#text Zeile 1 #text Zeile 2 #text Zeile 3 #message c=$TEXT(1)
Code
Grundsätzlich gilt in BAL: Eine Prozedur - eine Zeile.
Bei vielen und/oder langen Parametern führt das zu recht langen Code-Zeilen und zu Unübersichtlichkeit. Hier können nun Teile der Parameter mit #code in weitere Zeile ausgelagert werden, deren Inhalt dann mit $CODE$ oder $CODE$ der eigentlichen Code-Zeile hinzugefügt wird.
#code
Fügt Text dem Code-Speicher hinzu.
Parameter
#code hat keine benannten Parameter. Die ganze Zeile nach dem #code und dem trennenden Leerzeichen wird hinzugefügt.
Beispiel
#code cnt=2 #code fn1=G:\pics\pic5d68865cdaba62_62767562.jpg #code fn2=G:\pics\pic5d913c48682128_67979256.jpg #email_send from=test@****.de to=info@*****************.de bcc=info@*****.de subject=Testmail text=$TEXT(1) $CODE$
$CODE$ / $CODEN$
$CODE$ und $CODEN$ sind keine Funktionen, auch wenn sie auf den ersten Blick ähnlich aussehen. Sie haben keine Parameter und auch keine Klammern, dafür ein abschließendes $.
Beide Anweisungen fügen den Code-Speicher der jeweiligen Zeile hinzu. $CODE$ löscht danach den Code-Speicher, $CODEN$ tut das nicht, so dass dieselben Parameter wiederholt eingefügt werden können (beim letzten Einfügen sollte dann $CODE$ verwendet werden).
Separierte Zeile
Eine separierte Zeile ist eine Textzeile, die mehrere gleichartige Werte enthält, die durch Trennzeichen getrennt sind.
Beispiel:
3244,4465,7763,4536,4356,7777
Solche Zeilen können mit #sepline aufgetrennt werden.
#sepline
Trennt eine separierte Zeile auf und führt für jeden Wert das mit er angegebene Kommando aus.
Es handelt sich dabei um eine nummerierte Prozedur (#sepline, #sepline2...)
Parameter
- er ("each row") - Das Kommando, das für jeden Wert der separierten Zeile aufgerufen wird. Funktionen werden ersetzt.
- ern ("each row no") - Das Kommando, das für jeden Wert der separierten Zeile aufgerufen wird. Funktionen werden nicht ersetzt. Wenn ern einen Wert hat, bleibt er unberücksichtigt. Üblicherweise wird er verwendet.
- ert ("each row transaction") - Wenn Y, wird für jeden Wert der separierten Zeile eine eigene Transaktion gestartet und nach der Abarbeitung des Kommandos wieder geschlossen.
- m ("maximum") - Es wird maximal für die Anzahl der angegebenen Werte das in er angegebene Kommando ausgeführt. Dieser Parameter wird häufig dazu verwendet, während der Entwicklung mit einer geringen Zahl von Datensätzen zu arbeiten; Funktionen werden ersetzt.
- sep ("separator") - Das oder die Trennzeichen; default ist das Semikolon.
- z - Der Inhalt der separierten Zeile; Funktionen werden ersetzt.
Beispiel
#cmd #cout c=$SEPLINE(1) #sepline z=3244,4465,7763,4536,4356,7777 sep=, er=1
$SEPLINE()
Greift auf den einzelnen Wert einer mit #sepline getrennten Zeile zu.
Parameter
- Nummer der separierten Zeile
Beispiel
#cmd #cout c=$SEPLINE(3) #sepline3 z=3244;4465;7763;4536;4356;7777 er=1
User und Rechte
Aus Gründen der Übersichtlichkeit ist die Rechtevergabe zweistufig:
- Es werden (meist am Anfang eines Primär-Kommandos) Rechte-Definitionen erstellt, die einer oder mehreren Benutzergruppen Rechte (lesen oder lesen und schreiben) zuweisen. Die Rechte werden dabei implizit auch allen Untergruppen der angegebenen Benutzergruppe erteilt (Zum Beispiel: Rechte der Gruppe user hat auch implizit die Gruppe user.admin).
- Dem Parameter r verschiedener Prozeduren kann dann eine Rechte-Definition zugewiesen werden.
Den Parameter r als Rechte-Definition berücksichtigen die folgenden Prozeduren:
- #frm
- Buttons (#btn, #btns_btn)
- Alle Segmente (#text_seg, #memo_seg, #btns_seg, vl_seg, #grd_seg, #xgrd_seg)
- Tree (#tree_add, #tree_fill, #tree_fillsql, Lese-Recht reicht)
- Grid-Spalten (#grd_col, #xgrd_col)
- #vl_line (für die komplette Zeile (r) und die einzelne Zelle (r1, r2, r3...))
Wo der Parameter r nicht gesetzt ist, wird die Rechte-Definition der Formulars verwendet.
#rights
Setzt eine Rechte-Definition im betreffenden Kommando.
Parameter
- n ("name") - Name der Rechte-Definition; default ist frm, also dsa Default-Recht für das Formular.
- r_ ("right") - Prefix für die Benutzergruppe. Für die Rechte-Definition sind die folgenden Werte zulässig
- n ("no") - kein Recht
- r ("read") - nur lesen
- w ("write") - lesen und schreiben
Beispiel
#rights n=frm r_user=r r_user.admin=w
Setzt für alle User das Lese-Recht und für Administratoren das Lese- und Schreibrecht.
#rights_clear
Löscht alle Rechte-Definitionen im betreffenden Kommando
Parameter
(keine)
Beispiel
#rights_clear
$USERID()
Die ID des angemeldeten Users
Parameter
(keine)
Beispiel
#sql_exec kusr=$USERID()
$RIGHTUSERID()
Administratoren können andere User einstellen (Userliste links unten im BAF-Client), vor allem um deren Rechte zu prüfen. Die UserID dieses ausgewählten Users kann mit der Funktion $RIGHTUSERID() ermittelt werden.
In fast allen Fällen gilt der folgende Grundsatz: Lesende Operationen mit $RIGHTUSERID(), schreibende Operationen mit $USERID().
Parameter
(keine)
Beispiel
#sql_open kusr=$RIGHTUSERID()
$ADM()
Gibt den ersten Parameter (oder Y) zurück, wenn der angemeldete User Administrator-Rechte hat, andernfalls den zweiten Parameter (oder N).
Parameter
- Wert, der zurückgegeben wird, wenn der angemeldete User Administrator-Rechte hat; sofern kein Wert angegeben ist, Y
- Wert, der zurückgegeben wird, wenn der angemeldete User keine Administrator-Rechte hat; sofern kein Wert angegeben ist, N
(keine)
Beispiel
~ $ADM()
$RADM()
Gibt den ersten Parameter (oder Y) zurück, wenn der ausgewählte User Administrator-Rechte hat, andernfalls den zweiten Parameter (oder N).
Parameter
- Wert, der zurückgegeben wird, wenn der ausgewählte User Administrator-Rechte hat; sofern kein Wert angegeben ist, Y
- Wert, der zurückgegeben wird, wenn der ausgewählte User keine Administrator-Rechte hat; sofern kein Wert angegeben ist, N
Beispiel
~ $RADM()
Ausführen
#exec
Führt ein anderes Kommando aus
Parameter
- #cmd ("command") - Names des (Primär- oder Sub-) Kommandos, das ausgeführt werden soll.
Beispiel
#exec cmd="xtodo_page_add(XU,$PVAL(vl,user_user_id),$PVAL(vl,login),$PVAL(vl,shortname)$CHR(crlf)$PVAL(vl,firstname) $PVAL(vl,lastname))"
#batchexec
Speichert den Text n in der Datei batch.bat und führt diese aus.
Parameter
- clr ("clear") - Wenn Y, wird der Text nach Ausführung des Batch-Datei gelöscht; Default Y; Funktionen werden ersetzt;
- n ("number") - Nummer des Textes; der mit #text gespeicherte Text hat die Nummer 1
Beispiel
#batchexec n=1
#file_open
Öffnet eine Datei (oder auch eine Webseite)
Parameter
- fn ("FileName") - Name der Datei oder die URL der Webseite
Beispiel
#file_open fn=c:\temp\test.csv #file_open fn=https://www.google.de
#loop
BAL kennt keine Schleifen als Sprachelement. Um Schleifen mit einer fest Schleifenzahl auszuführen, wird die Przedur #loop verwendet.
Parameter
- er - ("each row") Das Kommando, das für jede Zeile der Datenmenge aufgerufen wird. Funktionen werden ersetzt.
- ern - ("each row no") Das Kommando, das für jede Zeile der Datenmenge aufgerufen wird. Funktionen werden nicht ersetzt. Wenn ern einen Wert hat, bleibt er unberücksichtigt. Üblicherweise wird er verwendet.
- ert - ("each row transaction") Wenn Y, wird für jede Zeile der Datenmenge eine eigene Transaktion gestartet und nach der Abarbeitung des Kommandos wieder geschlossen.
- lf ("loop from") - Anfangswert der Schleifenvariable; Funktionen werden ersetzt.
- lt ("loop to") - Endwert der Schleifenvariable; Funktionen werden ersetzt.
- n ("name") - Name der Variablen, in der die Schleifenvariable gespeichert wird (damit sie an anderer Stelle gelesen werden kann); Funktionen werden ersetzt.
Beispiel
#loop lf=42 lt=1337 er=test_line
$EXEC
Führt ein Kommando. Im ausgeführten Kommando kann eine Variable gesetzt werden, die dann als Funktionsergebnis von $EXEC zurückgegeben wird.
Parameter
- Kommando, das ausgeführt werden soll
- optional: Der Name der Variablen, in der das Ergebnis steht; default ist result
Beispiel
#frm c="test_funkexec" y=console #cout c=$EXEC(test_funkexec_line)
-- test_funkexec_line #var_set n=result z=42
Dateien und Verzeichnisse
#dir_force
Stellt sicher, dass es den spezifizierten Verzeichnispfad gibt, indem erforderlichenfalls Verzeichnisse angelegt werden.
Parameter
- n ("name") - Names des Pfads
Beispiel
#dir_force n=c:\temp\pdf
#dir_proc
Durchsucht ein Verzeichnis nach Dateien, die den angegebenen Kriterien entsprechen, und führt für jede gefundene Datei cmd aus.
Parameter
- cmd ("command") - Kommando, das für jede gefundene Datei ausgeführt wird
- dn ("DirectoryName") - Pfad des Verzeichnisses, in dem die Dateien gesucht werden; Funktionen werden ersetzt.
- done - Verzeichnis, in das die Dateien nach Abarbeitung verschoben werden (sofern der Parameter nicht leer ist).
- fn ("filename") - Suchkriterium für den Dateinamen; Funktionen werden ersetzt; Default *
- n ("name") - Name der Variablen, in welcher der Dateiname der aktuell zu bearbeitenden Datei inklusive Pfad gespeichert wird; Funktionen werden ersetzt; Default dir_proc
Beispiel
#procdir dn=c:\temp\in done=c:\temp\done fn=*.csv cmd=importcsv_line
$DIR()
Ermittelt einen Verzeichnisnamen. Trailing Path Delimiter (\ bei Windows) wird immer angehängt.
Parameter
- Bezeichnung des Verzeichnisses
- appdata - Verzeichnis für Anwendungsdaten des Users
- cappdata - gemeinsames Verzeichnis für Anwendungsdaten aller User
- cdoc - gemeinsames Dokumentenverzeichnis aller User
- cfav / cfavorites - gemeinsames Favoritenverzeichnis aller User
- cmusic - gemeinsames Musikverzeichnis aller User
- cpic / cpictures - gemeinsames Bilderverzeichnis aller User
- cvideo - gemeinsames Videoverzeichnis aller User
- desktop - Desktopverzeichnis des Rechners
- doc / docdir - Dokumentenverzeichnis des Users
- downloads - Downloadsverzeichnis des Users
- fav / favorites - Favoritenverzeichnis des Users
- fonts - Fontsverzeichnis des Rechners
- music - Musikverzeichnis des Users
- pic / pictures - Bilderverzeichnis des Users
- prog / program - Programmverzeichnis des Rechners
- prog86 / program86 - Programm86-Verzeichnis des Rechners
- root - Root-Verzeichnis des BAF-Clients bzw. des BAF-Servers
- userroot / usrroot - User-Verzeichnis des BAF-Clients
- video - Videoverzeichnis des Users
Beispiel
#text_save fn=$DIR(doc)test.txt
$FILEDIALOG()
Führt einen Dateiauswahl-Dialog aus und gibt den gewählten Dateinamen zurück. Im Falle des Abbruchs wird abort zurück gegeben.
Parameter
- Wenn der erste Parameter save lautet, wird ein Speichern-Dialog, sonst ein Öffnen-Dialog aufgerufen.
- Filter-Statement, immer Kombinationen aus Text (Text-Dateien *.txt) und Filter-Statement(*.txt), getrennt durch Pipes.
- Standard-Dateierweiterung
Beispiel
#text_save fn="$FILEDIALOG(save,Text-Dateien *.txt|*.txt|Alle Dateien *.*|*.*,txt)"
(Bitte beachten: Wegen der Leerzeichen im Filter-Statement muss der ganze Parameter in doppelte Anführungszeichen gesetzt werden.)
Ini-Dateien
Der BAF-Client verwendet eine Ini-Datei im Root-Verzeichnis (vor allem für die Datenbankverbindungen) und eine Ini-Datei BafClientFM.ini im User-Anwendungsverzeichnis (vor allem für die Formularpositionen). Es können aber auch weitere Ini-Dateien verwendet werden.
#ini_val
Schreibt einen Wert in die Ini-Datei. #ini_val ist eine nummerierte Prozedur: #ini_val schreibt in die erste Ini-Datei, #ini_val2 in die zweite Ini-Datei und so weiter. Diese Ini-Dateien werden zunächst nur im Speicher gehalten und müssen explizit aus einer Datei geladen oder in eine Datei gespeichert werden.
Parameter
- i ("item" / "ident") - Name des Eintrags in der Ini-Datei; Funktionen werden ersetzt
- n ("name") - Wenn der Parameter n den Wert usr oder user hat, dann bleibt die Nummer der Ini-Datei unberücksichtigt und der Wert wird in die Datei BafClientFM.ini im im User-Anwendungsverzeichnis geschrieben.
- sec ("section") - Abschnitt in der Ini-Datei; Funktionen werden ersetzt; default values
- z - Wert, der in die Ini-Datei geschrieben wird; Funktionen werden ersetzt.
Beispiel
#ini_val i=date_last z=$NOW()
#ini_load
Lädt eine Ini-Datei aus einer Datei. Es handelt sich um eine nummerierte Prozedur: #ini_load lädt die Ini-Datei 1, #ini_load2 lädt die Ini-Datei 2 und so weiter.
Parameter
- fn ("FileName") - Dateiname der Datei, die geladen wird
Beispiel
#ini_load fn=$DIR(userroot)werte.ini
#ini_save
Speichert eine Ini-Datei ineine Datei. Es handelt sich um eine nummerierte Prozedur: #ini_save speichert die Ini-Datei 1, #ini_save2 speichert die Ini-Datei 2 und so weiter.
Parameter
- fn ("FileName") - Dateiname der Datei, in die gespeichert wird
Beispiel
#ini_save fn=$DIR(userroot)werte.ini
$INI()
Liest einen Wert aus einer Ini-Datei.
Parameter
- Nummer der Ini-Datei, alternativ usr oder root
- Item (Ident)
- optional: Sektion; wenn nicht vorhanden, dann values. Wenn db!, dann wird als Sektion die aktuell gewählte Datenbankverbindung verwendet (in diesem Fall sollte als erster Parameter root verwendet werden).
- optional: Default-Wert; wenn nicht vorhanden, dann ein leerer String
Beispiele
#var_set n=datum z=$INI(1,datum) #var_set n=datum z=$INI(1,datum,bearbeitung,$TODAY())
$INITEXT()
Gibt die komplette Ini-Datei zurück. Wird vor allem beim Debugging verwendet.
Parameter
- Nummer der Ini-Datei, alternativ usr oder root
Beispiel
#coutl $INITEXT(usr)
Zwischenablage
Das BAF-Framework unterstützt die Zwischenablage nur für Text.
#clipboard
Schreibt einen Text in die Zwischenablage
Parameter
- z - Wert, der in der Zwischenablage gespeichert werden soll; Funktionen werden ersetzt
Beispiele
#clipboard z=$TEXT() #clipboard z=$CHR(dquote)$PVAL(test,zahl,allsel,$CHR(crlf))$CHR(dquote)
$CLIPBOARD()
Gibt den Text aus der Zwischenablage zurück.
Parameter
(keine)
Beispiel
#setvar n=clp z=$CLIPBOARD()
String-Funktionen
Die folgenden Funktionen geben einen String zurück.
$CHR()
Gibt ein Zeichen (ggf zwei Zeichen) zurück
Parameter
- Ansi-Zeichennummer oder eine der folgenden Bezeichnungen:
- crlf - Zeilenumbruch #13#10
- cr - Zeichen #13
- lf - Zeichen #10
- tab - Tabulator
- quote - ' (einfache Anführungszeichen)
- dquote - " (doppelte Anführungszeichen)
- space / leer - Leerzeichen
- comma / komma - , (Komma)
- questionmark / qmark / frage / fragezeichen - ?
- bro / bracket_open - (
- brc / bracket_close - )
- dollar - $
Beispiel
#exec cmd="xtodo_page_add(XU,$PVAL(vl,user_user_id),$PVAL(vl,login),$PVAL(vl,shortname)$CHR(crlf)$PVAL(vl,firstname) $PVAL(vl,lastname))"
$COPY()
Kopiert aus dem String im ersten Parameter einen Teil der Zeichen.
Parameter
- String, aus dem kopiert werden soll
- Position im String, ab dem Zeichen kopiert werden sollen
- optional: Anzahl der Zeichen, die kopiert werden sollen. Wenn dieser Parameter fehlt, werden alle Zeichen ab der angegebenen Position kopiert.
Beispiel
#grdcol f=ref c1="Ref" w=30 y=link ro=Y cmdn=xtodo_add(link,$COPY($PVAL(grid,ctype,sel),1,2))
$EXEC()
Führt ein Kommando aus und gibt ein Funktionsergebnis zurück.
Parameter
- Kommando, das ausgeführt werden soll.
- optional: Name der Variable, die als Funktionsergebnis zurück gegeben werden soll; default result
Beispiel
#val_set n=test z=$EXEC(testkommando)
$GUID()
Erzeugt eine GUID und gibt sie zurück.
Parameter
- optional: Name einer Variablen, in welcher die GUID zusätzlich gespeichert wird.
Beispiel
#sql_exec kid=$GUID()
$HASH()
Erzeugt einen Hash-Wert vom String im ersten Parameter.
Parameter
- String, von welchem der Hash gebildet werden soll.
- zu verwendender Hash-Algorithmus:
- sha512
- sha512_256
- sha512_224
- sha384
- sha256
- sha224
- sha1
- md5 (Hinweis: MD5 gilt seit Längerem als nicht mehr sicher. Verwenden Sie ihn nur, wenn dies aus Gründen der Abwärts-Kompatbilität zwingend ist.)
Beispiel
#page_val i=vl col=1 row=3 z=$HASH($PVAL(vl,1,2),sha512)
$INVLOOKUP()
Ermittelt den Key aus einer Nachschlageliste bei Übergabe des Values.
Parameter
- Name der Nachschlageliste
- Valuedes Eintrags
- Default-Wert; wird verwendet, wenn der Rückgabe-Wert leer ist
Beispiel
#cout c="$INVLOOKUP(general_status,aktiv,Wert nicht vorhanden)"
$LOOKUP()
Ermittelt einen Wert aus einer Nachschlageliste.
Parameter
- Name der Nachschlageliste
- Key des Eintrags
- Default-Wert; wird verwendet, wenn der Rückgabe-Wert leer ist
Beispiel
#cout c="$LOOKUP(general_status,1,Status nicht gesetzt)"
$LOW()
Wandelt den übergebenen String in Kleinbuchstaben um.
Parameter
- String, der in Kleinbuchstaben gewandelt werden soll.
Beispiel
~ $LOW($EDT(edt1)) = bus
$LOWNOSPACE()
Wandelt einen String in Kleinbuchstaben und ersetzt alle Leerzeichen durch Unterstriche.
Parameter
- String, der gewandelt werden soll
Beispiel
#page_val i=vl col=1 row=3 z=$LOWNOSPACE($PVAL(vl,1,2))
$NOCRLF()
Entfernt Zeilenumbrüche
Parameter
- String, aus dem die Zeilenumbrüche entfernt werden sollen
- optional: Zeichenfolge, die an Stelle der Zeilenumbrüche eingefügt werden sollen
Beispiel
#val_set n=2 z=$NOCRLF($VAL(1),;)
$NVL()
Liefert einen Ersatzwert, wenn der Wert leer ist.
Parameter
- String, der als Funktionsergebnis zurückgegeben wird
- String, der als Funktionsergebnis zurückgegeben wird, wenn der erste Parameter leer ist
Beispiel
sql where ckey <= $NVL($PVAL(grid,nummer,lookuplive),0)
Liefert $PVAL einen leeren Wert zurück (z.B., weil die Gridzeile neu angelegt wurde und daher noch keine Nummer eingetragen ist), so wird statt dessen 0 verwendet, damit die WHERE-Klausel syntaktisch korrekt ist.
$PAD()
Füllt links oder rechts bis zur vorgegebenen Länge mit Zeichen auf.
Parameter
- Der ursprüngliche String
- Soll-Länge. Ist der ursprüngliche String bereits länger, wird er nicht gekürzt, es werden aber auch keine weiteren Zeichen hinzugefügt
- Wenn L, werden die Zeichen vorne hinzugefügt, andernfalls hinten
- Zeichen, die soweit und so oft hinzugefügt werden, bis die Soll-Länge erreicht ist. Umfasst der Parameter mehrere Zeichen, werden diese ggf. nicht alle hinzugefügt.
Beispiel
sql text1 = '$PAD($VAR(text1),70,R, )'
$SUBSTR()
Kopiert aus dem String im ersten Parameter einen Teil der Zeichen.
(Hinweis: Selbe Funktionalität wie $COPY())
Parameter
- String, aus dem kopiert werden soll
- Position im String, ab dem Zeichen kopiert werden sollen
- optional: Anzahl der Zeichen, die kopiert werden sollen. Wenn dieser Parameter fehlt, werden alle Zeichen ab der angegebenen Position kopiert.
Beispiel
#grdcol f=ref c1="Ref" w=30 y=link ro=Y cmdn=xtodo_add(link,$SUBSTR($PVAL(grid,ctype,sel),1,2))
$STREP()
("string replace") Ersetzt Zeichen im String durch andere Zeichen.
Parameter
- String, in welchen Zeichen ersetzt werden sollen.
- Zeichen, die ersetzt werden sollen
- Zeichen, die an deren Stelle treten sollen
- optional: Optionen (kombinierbar)
- i - Groß- und Kleinschreibung ignorieren
- a - Alle Vorkommen ersetzen (andernfalls wird nur das erste Vorkommen ersetzt)
Beispiele
#page_val i=vl col=1 row=3 z="$STREP($PVAL(vl,1,2), ,_,a)" #page_val i=vl col=1 row=3 z=$STREP($PVAL(vl,1,2),$CHR(space),_,a)
Hinweis: Beide Beispiele haben exakt dieselbe Funktion. Im oberen Beispiel steht das Leerzeichen direkt im Text, dafür muss der komplette Parameter in doppelte Anführungszeichen, im unteren Beispiel wird das Leerzeichen durch $CHR(space) eingefügt, dafür können die Leerzeichen unterbleiben.
$STREXTR()
("string extract") Extrahiert einen Teil aus einem String.
Parameter
- String, aus dem extrahiert werden soll
- Extraktionstyp
- ffe ("from first exclude") - Extrahiert ab der Zeichenfolge im dritten Parameter und schließt diese Zeichenfolge aus
- ffi ("from first include") - Extrahiert ab der Zeichenfolge im dritten Parameter und schließt diese Zeichenfolge ein
- tfe ("to first exclude") - Extrahiert bis zur Zeichenfolge im dritten Parameter und schließt diese Zeichenfolge aus
- tfi ("to first include") - Extrahiert bis zur Zeichenfolge im dritten Parameter und schließt diese Zeichenfolge ein
Beispiele
#cout c="$STREXTR(test;test2,ffe,;)" -- Ergebnis: test2 #cout c="$STREXTR(test;test2,ffi,;)" -- Ergebnis: ;test2 #cout c="$STREXTR(test;test2,tfe,;)" -- Ergebnis: test #cout c="$STREXTR(test;test2,tfi,;)" -- Ergebnis: test; #cout c="$STREXTR(test;!§§test2,tfe,;!§§)" -- Ergebnis: test
$TRIM()
Entfernt Leerzeichen und Zeilenumbrüche am Rand des Strings
Parameter
- String, der getrimmt werden soll
- optional
- L - trimmt nur auf der linken Seite
- R - trimmt nur auf der rechten Seite
Beispiel
#var_set n=test z=$TRIM($VAL(1),R)
$UPP()
Wandelt den übergebenen String in Großbuchstaben um.
Parameter
- String, der in Großbuchstaben gewandelt werden soll.
Beispiel
~ $UPP($EDT(edt1)) = BUS
Integer-Funktionen
Die folgenden Funktionen geben eine ganze Zahl zurück
$DEC()
Verringert die Zahl im ersten Parameter.
Parameter
- Zahl die verringert werden soll.
- optional: Zahl, um die verringert werden soll. Wenn nicht vorhanden, dann 1.
Beispiel
#setval n=1 z=$DEC($VAL(1))
$ICALC()
Führt eine Berechnung mit ganzzahligen Werten durch.
Parameter
- Operator, es stehen zur Verfügung
- +
- -
- *
- div
- mod
- Erste Zahl
- Zweite Zahl
- optional beim Operator +: weitere Summanden
Beispiel
#cout c=$ICALC(mod,17,5)
$INC()
Erhöht die Zahl im ersten Parameter.
Parameter
- Zahl die erhöht werden soll.
- optional: Zahl, um die erhöht werden soll. Wenn nicht vorhanden, dann 1.
Beispiel
#setval n=1 z=$INC($VAL(1))
$INTLEN()
Ist der String im Parameter eine ganz Zahl, dann wird deren Länge in Zeichen zurückgegeben, andernfalls -1; ein leerer String im ersten Parameter ergibt 0.
Parameter
- Zahl, deren Länge ermittelt wird.
Beispiel
~ $INTLEN($EDT(edt1)) = 4
$LEN()
Ermittelt die Länge eines Strings in Zeichen.
Parameter
- String, dessen Länge ermittelt werden soll.
Beispiel
~ $LEN($EDT(edt1)) = 4
$POS()
Ermittelt die Position des Substrings in einem String. Das Funktionsergebnis ist die Position, das erste Zeichen ist 1. 0 wird zurück gegeben, wenn der Substring im String nicht vorkommt.
Parameter
- Substring (nach dem gesucht wird)
- String (in dem gesucht wird)
- optional: Wenn ic (ignore case), dann wird bei der Suche die Groß- und Kleinschreibung nicht beachtet.
Beispiel
~ $POS($EDT(edt1),$VAR(1),ic) > 0
Datumsfunktionen
$INCDATE()
Die Funktione $INCDATE() verändert das Datum im ersten Parameter um die Anzahl Tage im zweiten Parameter.
Parameter
- Datum, das verändert werden soll
- optional: Die Tage, um die verändert werden soll; wenn leer, dann 1.
Beispiel
#cout c=$INCDATE($NOW(),-3) clr=Y
$INT2TIME()
Macht aus z.B. 1130 die Zeit 11:30
Parameter
- Zeit im Integer-Format
Beispiel
#sql_exec k_time=$INT2TIME($VAL(1))
$NOW()
Gibt das aktuelle Datum und die aktuelle Uhrzeit im Format dd.mm.yyyy hh:mm:ss zurück.
Parameter
(keine)
Beispiel
#execsql k_datechg=$NOW()
$NOWFMT()
Gibt das aktuelle Datum und/oder die aktuelle Uhrzeit im angegebenen Format zurück.
Parameter
- Formatierungsstring (Syntax wie FormatDateTime in Delphi)
Beispiel
#sql_exec k_datechg="$NOWFMT(yyyy-mm-dd hh:mm:ss)"
$NOWMIN()
Gibt das aktuelle Datum und die aktuelle Uhrzeit ohne Sekunden (also dd.mm.yyyy hh:mm) zurück
Parameter
(keine)
Beispiel
#sql_exec k_datechg=$NOWMIN()
$TODAY()
Gibt das aktuelle Datum im Format dd.mm.yyyy zurück.
Parameter
(keine)
Beispiel
#sql_exec k_datechg=$TODAY()
$DFMT()
("date formated") Formatiert das übergebene Datum.
Parameter
- Datum, ggf. mit Uhrzeit, das formatiert werden soll.
- Formatierungsstring wie in Delphi
Beispiel
#sql_exec k_datechg="$DFMT($NOW(),yyyy-mm-dd hh:mm:ss)"
Bool'sche Funktionen
Die folgenden Funktionen geben Y oder N zurück.
$BOOL()
Wertet das bool'sche Statement im Parameter aus.
Operatoren
- = gleich
- == gleich ohne Berücksichtigung der Groß- und Kleinschreibung
- <> ungleich
- != ungleich
- > größer
- >= größer gleich
- < kleiner
- <= kleiner gleich
- and Und-Verknüpfung
- or ODER-Verknüpfung
Hinweis: Die Statements werden von links nach rechts ausgewertet, and und or sind gleichwetig, gegebenenfalls müssen Klammern eingesetzt werden.
Parameter
- Bool'sches Statement, das ausgewertet wird
Beispiel
#cout c="$BOOL((17 > 22) or (5 > 3))" #cout c="$BOOL(17 > 22 or 5 > 3)"
$EMPTY()
Gibt Y zurück, wenn der Parameter ein leerer String ist. (Leerzeichen zählen auch als leerer String.)
Parameter
- String, der geprüft wird
Beispiel
~ $EMPTY($DATE(n,grpname))
$IN()
Gibt Y zurück, wenn sich der erste Parameter in der Menge der nachfolgenden Parameter befindet. Groß- und Kleinschreibung wird im Gegensatz zu $INIC() beachtet
Parameter
- Wert, der geprüft wird
- Liste, gegen die geprüft wird
Beispiel
Die erste Anweisung gibt Y und die zweite N zurück
#cout c="$IN(beta,alpha,beta,gamma,delta)" #cout c="$IN(beta,alpha,BETA,gamma,delta)"
$INIC()
Gibt Y zurück, wenn sich der erste Parameter in der Menge der nachfolgenden Parameter befindet. Groß- und Kleinschreibung wird im Gegensatz zu $IN() nicht beachtet beachtet
Parameter
- Wert, der geprüft wird
- Liste, gegen die geprüft wird
Beispiel
Beide Anweisungen geben Y zurück
#cout c="$INIC(beta,alpha,beta,gamma,delta)" #cout c="$INIC(beta,alpha,BETA,gamma,delta)"
$ISCURR()
Gibt Y zurück, wenn sich der Parameter in einen Currency-Wert wandeln lässt
Parameter
- Wert, der geprüft wird
Beispiel
~ $ISCURR($DATA(n,rechnungssumme))
$ISINT()
Gibt Y zurück, wenn sich der Parameter in einen ganzzahligen Wert wandeln lässt
Parameter
- Wert, der geprüft wird
Beispiel
~ $ISINT($DATA(n,tage))
$INTMAX()
Gibt Y zurück, wenn die Zahl im ersten Parameter nicht größer ("maximal gleich") als die Zahl im zweiten Parameter ist.
Parameter
- Zahl, die verglichen wird
- Zahl. mit der vergleichen wird
Beispiel
~ $INTMAX($DATA(n,lfdnr), 17)
$INTMIN()
Gibt Y zurück, wenn die Zahl im ersten Parameter nicht kleiner ("minimal gleich") als die Zahl im zweiten Parameter ist.
Parameter
- Zahl, die verglichen wird
- Zahl. mit der vergleichen wird
Beispiel
~ $INTMIN($DATA(n,lfdnr), 17)
$NEMPTY()
("not empty") Gibt Y zurück, wenn der Parameter nicht leer ist.
Parameter
- String, dessen Inhalt geprüft wird. Leerzeichen gelten als leerer String.
Beispiel
~ $NEMPTY($EDT(edt1))
$DATEMINREL()
Gibt Y zurück, wenn das Datum im ersten Parameter nicht kleiner ("minimal gleich") dem aktuellen Datum ist, das um die Anzahl Tage im zweiten Parameter verändert wurde. Wird gerne verwendet, um das Erreichen von Deadlines zu prüfen.
Parameter
- Datum, das geprüft wird
- Anzahl an Tage, die dem aktuellen Datum vor der Prüfung hinzu addiert werden
Beispiel
~ $DATEMINREL($DATA(n,datum), 3)
$DATEMAXREL()
Gibt Y zurück, wenn das Datum im ersten Parameter nicht größer ("maximal gleich") dem aktuellen Datum ist, das um die Anzahl Tage im zweiten Parameter verändert wurde. Wird gerne verwendet, um das Erreichen von Deadlines zu prüfen.
Parameter
- Datum, das geprüft wird
- Anzahl an Tage, die dem aktuellen Datum vor der Prüfung hinzu addiert werden
Beispiel
~ $DATEMAXREL($DATA(n,datum), 3)
$DATEBETWEEN
Gibt Y zurück, wenn das Datum des ersten Parameters im angegebenen Bereich liegt.
Alle Paremeter, die sich nicht in ein Datum wandeln lassen, werden zu 0 (30.12.1899) konvertiert.
Parameter
- Wert, der geprüft wird
- Untere Grenze des Bereichs
- Obere Grenze des Bereichs
- und weitere: Das Ergebnis ist auch dann Y, wenn der erste Parameter diesem Datum entspricht. Siehe Beispiel.
Beispiel
#cout c="Test $DATEBETWEEN($TODAY(),1.1.2020,2.2.2022)"
$NOT
Invertiert einen bool'schen Wert. Aus Y (y, J, j, 1) wird N und aus N wird Y.
Parameter
- Wert, der invertiert wird
Beispiel
#coutl $NOT(2)
$NUMBETWEEN
Gibt Y zurück, wenn die Zahl des ersten Parameters im angegebenen Bereich liegt.
Alle Paremeter, die sich nicht in eine Zahl wandeln lassen, werden zu 0 konvertiert.
Parameter
- Wert, der geprüft wird
- Untere Grenze des Bereichs
- Obere Grenze des Bereichs
- und weitere: Das Ergebnis ist auch dann Y, wenn der erste Parameter dieser Zahl entspricht. Siehe Beispiel.
Beispiele
#page_check c="Die Schuhgröße muss zwischen 28 und 56 liegen" chk="$NUMBETWEEN($PVAL(vl,schuhgroesse),28,56)" #page_check c="Die Schuhgröße muss zwischen 28 und 56 liegen" chk="$NUMBETWEEN($PVAL(vl,schuhgroesse),28,56,)"
Die beiden Beispiele unterscheiden sich auf den ersten Blick kaum. Bei der ersten Zeile muss jedoch eine Schuhgröße eingegeben werden. Bleibt das Feld im VL-Segment leer, so wird dieser fehlende Wert nach 0 konvertiert und liegt nicht zwischen 28 und 56.
Anders bei der zweiten Zeile: Das Komma vor der schließenden Klammer sorgt für einen vierten Parameter, der ebenfalls leer ist und damit nach 0 gewandelt wird. Auf diese Weise werden die leere Eingaben (und die Eingabe von 0) gültig.
$REGEX()
Die Funktion $REGEX() ("regular expressions") prüft, ob der String in Parameter 1 den Anforderungen von Parameter 2 entspricht (Ergebnis Y) oder nicht (Ergebnis N).
Parameter
- String, der geprüft werden soll
- Regulärer Ausdruck, mit dem der String in Parameter 2 geprüft wird.
Beispiel
~ $REGEX($VAR(med),^[A-Z]{3}$)
$TEXT_HASLINE()
Die Funktion $TEXT_HASLINE() prüft, ob die als Parameter 2 übergebene Textzeile in einem Text vorkommt. Es wird nur auf komplette Textzeilen geprüft. Wird zum Beispiel verwendet, um eine Liste von Kundennummern zu erstellen, und dann auf einzelne Nummern zu prüfen.
Parameter
- Nummer des Textes
- Textzeile, deren Vorkommen geprüft wird
- Ergebnis, wenn die Textzeile vorkommt; default Y
- Ergebnis, wenn die Textzeile nicht vorkommt; default N
Beispiel
#coutl $TEXT_HASLINE(1,990000018,1,0)
$VIBAN()
Die Funktion $VIBAN() ("validate IBAN") prüft eine IBAN anhand der Prüfziffern (3. und 4. Stelle).
Parameter
- IBAN, die geprüft werden soll
Beispiel
#coutl $VIBAN(DE12345)
Currency-Funktionen
$CCALC()
Führt eine Berechnung mit Festkommawerten durch
Operatoren
- + - Addition
- - - Subtraktion
- * - Multiplikation
- / - Division
- % - Division und Multiplikation des Ergebnisses mit 100
- +4 - Addition und Ausgabe mit 4 Nachkommastellen
- -4 - Subtraktion und Ausgabe mit 4 Nachkommastellen
- *4 - Multiplikation und Ausgabe mit 4 Nachkommastellen
- /4 - Division und Ausgabe mit 4 Nachkommastellen
- %4 - Division, Multiplikation des Ergebnisses mit 100 und Ausgabe mit 4 Nachkommastellen
Parameter
- Operator
- und weitere: Operanden
Beispiele
-- Ergebnis 10 #cout c="$CCALC(+,1,2,3,4)" -- Ergebnis 16,67 #cout c="$CCALC(/,100,2,3)"
$CURR()
Currency-Werte müssen in Funktionen mit einem Punkt als Dezimaltrennzeichen eingegeben werden, da das Komma die Parameter trennt. Sofern Konstanten verwendet werden, lässt sich das einfach so eingeben, sobald aber die Werte aus anderen Funktionen kommen (zum Beispiel $DATA()), müssen sie dann mit $CURR() in dieses Format umgewandelt werden.
Parameter
- Vorkommastellen
- Nachkommastellen
Beispiel
-- Ergebnis 43,48 #cout c="$CCALC(/,100,$CURR(2,3))" -- zum Vergleich; Ergebnis 16,67 #cout c="$CCALC(/,100,2,3)"