Interpreter

Aus bafbal.de
Version vom 2. Februar 2024, 18:18 Uhr von Michaelebner (Diskussion | Beiträge) (→‎$ICP())
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Im Interpreter sind nur wenige Prozeduren und Funktionen direkt implementiert. Die meisten Routinen finden sich in den Modulen.

Values

Im Gegensatz zu Variablen ist der Gültigkeitsbereich von Values auf das jeweilige (Primär- oder Sub-) Kommando beschränkt. Values haben Nummern, während Variable Namen haben.

#val_set

Setzt der Wert für einen Value.

Parameter

  • cnd (condition) - Der Value wird nur dann gesetzt, wenn cnd=Y ist; Funktionen werden ersetzt
  • ie (if empty) - Wenn der Wert von z leer ist, dann wird ersatzweise der Wert von ie verwendet; ähnlich NVL bei Oracle; Funktionen werden ersetzt
  • n - Nummer des Values
  • r (rights) - Der Value wird nur dann gesetzt, wenn das Recht vorliegt; default ist frm
  • rf (replace functions) - Wenn Y, dann werden nach der Zuweisung auf den Value nochmals die Funktionen ersetzt. Wird zum Beispiel benötigt, wenn Code mit Funktionen mittels $DATA() aus der Datenbank geladen wird; Funktionen werden ersetzt, default N; siehe Beispiel
  • z - Wert der Variablen, Funktionen werden ersetzt, default ist ein leerer String

Beispiele

#val_set   n=7   z=$GUID()
#val_set   n=1   z=$GUID()   r=admin
-- Zum Parameter rf: $NOW() in die Zwischenablage kopieren und dann ausführen
#val_set   n=1  z=$CLIPBOARD()   rf=N
#message   c=$VAL(1)
#val_set   n=1  z=$CLIPBOARD()   rf=Y
#message   c=$VAL(1)

#val_add

#val_add fügt einem Value einen Wert hinzu.

Parameter

  • cnd (condition) - Der Value wird nur dann gesetzt, wenn cnd=Y ist; Funktionen werden ersetzt
  • n - Nummer des Values; zwingend erforderlich
  • r (rights) - Der Value 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 dem Value hinzugefügt wird, Funktionen werden ersetzt, default ist ein leerer String oder eine 0


Beispiel

#val_set   n=1   z=$NOW()
#val_add   n=1   z=1   y=datetime
#cout   c=$VAL(1)

#val_clearall

Löscht alle Values. Wird selten benötigt, da die Values mit Ende des (Primär- oder Sub-) Kommandos ohnehin ihre Gültigkeit verlieren.

Parameter

(keine)

Beispiel

#val_clearall

$VAL()

Gibt den Inhalt eines Values zurück

Parameter

  1. Nummer des Values

Beispiel

#cout c=$VAL(3)

Log

#exception_info

Tritt eine Exception auf, dann wird die entsprechende Fehlermeldung in das Log geschrieben. Mit #exception_info kann eine Information ergänzt werden, die vor diese Fehlermeldung gesetzt wird. Üblicherweise wird das dazu verwendet, um eine ID zu schreiben, damit der fehlerhafte Datensatz gefunden wird.

Parameter

  • z - Wert, welcher vor die Fehlermeldung geschrieben wird.

Beispiel

#exception_info   z=$DATA(dat,knd_nr)


#log

Schreibt einen Text in das Log.

Parameter

  • c ("caption") - Text, der in das Log geschrieben wird; Funktionen werden ersetzt; default ist #log, Parameter c nicht gesetzt
  • y - Typ des Log-Eintrags; default I. Vorgesehen sind die folgenden Typen:
    • E - Error
    • I - Info
    • W - Warning

Beispiel

#log   y=W   c="Ermittelte Summe untypisch gering"

#logi

Schreibt einen Text als Info in das Log.

Parameter

Die Prozedur #logi hat keine benannten Parameter. Der komplette Text nach dem #logi und dem folgenden Leerzeichen wird in das Log geschrieben; Funktionen werden ersetzt.

Beispiel

#logi   Berechnung beendet

Kommandos

#tab_new

Öffnet einen neuen Tab im BAF-Client und führt dort ein Kommando aus.

Parameter

  • c ("caption") - Beschriftung des neuen Tabs
  • cmd ("command") - Kommando, das im neuen Tab ausgeführt wird

Beispiel

#tab_new   c=xuser   cmd=xuser($PAGE(link))

$CP()

("command parameter") - Greift auf einen Parameter des Kommandos zu.

Parameter

  1. Nummer des Parameters. 0-relativ, der erste Parameter hat somit die Nummer 0.

Beispiel

#page_fill  d=$CP(1)

$ICP()

("is command parameter") - Vergleicht den Parameter des Kommandos mit dem im zweiten oder weiteren Parameter angegebenen Wert; Unterschiede in Groß- und Kleinschreibung werden dabei nicht berücksichtigt. Gibt Y zurück, wenn der Parameter mit einem der Vergleichswerte übereinstimmt.

Wird fast immer in Verbindung mit Verzweigungsbedingungen verwendet.

Parameter

  1. Nummer des Parameters. 0-relativ, der erste Parameter hat somit die Nummer 0.
  2. und Folgende: Vergleichswerte

Beispiele

~ $ICP(0,ex)
~ $ICP(0,ex,im,new)

$INCP()

("is not command parameter") - Vergleicht den Parameter des Kommandos mit dem im zweiten oder weiteren Parameter angegebenen Wert; Unterschiede in Groß- und Kleinschreibung werden dabei nicht berücksichtigt. Gibt Y zurück, wenn der Parameter mit keinem der Vergleichswerte übereinstimmt.

Wird fast immer in Verbindung mit Verzweigungsbedingungen verwendet.

Parameter

  1. Nummer des Parameters. 0-relativ, der erste Parameter hat somit die Nummer 0.
  2. und Folgende: Vergleichswerte

Beispiele

~ $INCP(0,ex)
~ $INCP(0,ex,im,new)

Internes

Die folgenden Funktionen werden für interne Zwecke verwendet:

  • $INTER() - Name des Interpreters
  • $HISTSQL() - SQL-Statement für den History-Dialog
  • $HISTTABLE() - Tabellenname der History-Tabelle
  • $HISTMEMOFIELD() - Feldname des Memo-Feldes für den History-Dialog