Modul VAR neu
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
- n - Name der Variablen, Groß- und Kleinschreibung wird nicht unterschieden, zwingend erforderlich
- z - Wert der Variablen, Funktionen werden ersetzt, default ist ein leerer String
- ie - "if empty", Wenn der Wert von z leer ist, dann wird ersatzweise der Wert von ie verwendet; ähnlich NVL bei SQL
Beispiele
#var_set n=test z="Hello world" #var_set n=test2 z=$GUID() #var_set n=edt z=$EDT(edt1) ie=42
#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
- n - Name der Variablen, Groß- und Kleinschreibung wird nicht unterschieden, zwingend erforderlich
- z - Wert der Variablen, Funktionen werden ersetzt, default ist ein leerer String
- ie - "if empty", Wenn der Wert von z leer ist, dann wird ersatzweise der Wert von ie verwendet; ähnlich NVL bei SQL
Beispiele
#var_setempty n=test z="Hello world" #var_setempty n=test2 z=$GUID() #var_setempty n=edt z=$EDT(edt1) ie=42
#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
Beispiele
#message c=$VAR(test) #var_set n=neuer_wert z=$VAR(wert) ie=$VAR(alternativwert)
Kommandos
#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)
Beispiel
#cmd_clear3
#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
- fn - ("Filename") Dateiname der CSV-Datei
- ber - wenn Y, werden die Zeilenumbrüche innerhalb von Feldern durch Leerzeichen ersetzt. Die Felder müssen dabei in doppelten Anführungszeichen eingeschlossen sein.
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()
$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)
Beispiel
#text_clear7 #text7 Zeile 1 #text7 Zeile 2
Das vorangestellt #text_clear stellt sicher, dass Text7 leer ist.
#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
- 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)
- sort - Wenn Y, dann wird die Datei vor dem Speichern sortiert.
Beispiel
#text Hello world #text_save fn=$DIR(userroot)hello_world.txt
#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
- 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()
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).