Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
themeEclipse
languagexml
collapsetrue
 <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<FILE>
<META NAME="DIRECTORY">/g/h/i</META>
<META NAME="FILENAME">GHI.HTML</META>
<META NAME="UEBERSCHRIFT">GHI Ueberschrift 1</META>
<META NAME="TEXT">GHI_TESTFILE.HTML</META>
<META NAME="CONTENT_SOURCE">BACKCLICK</META>
<META NAME="CONTENT_ID">3</META>
</FILE>

File 4:

 

Code Block
themeEclipse
languagexml
collapsetrue
 <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<FILE>
<META NAME="DIRECTORY">/j/k/l</META>
<META NAME="FILENAME">JKL.HTML</META>
<META NAME="UEBERSCHRIFT">JKL Ueberschrift 1</META>
<META NAME="TEXT">JKL_TESTFILE.HTML</META>
<META NAME="CONTENT_SOURCE">BACKCLICK</META>
<META NAME="CONTENT_ID">4</META>
</FILE>

 

Alle nun folgenden Beispiele werden sich immer wieder auf die Daten aus diesen vier Files beziehen. File 1 ist das älteste File und File 4 ist das jüngste. Um die Resultate selbst nachvollziehen zu können, müssen Sie in BACKCLICK die Files einzeln im Abstand von 2 Minuten ins System überspielen. Das garantiert eine zeitliche Einordnung der Datensätze.Nun müssen Sie in das Menü Newsletter schreiben wechseln und eine beliebigen Verteilerliste auswählen. In das Texteingabefeld geben Sie nun bitte folgendes ein: 

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<UEBERSCHRIFT>>
SORT LATEST FIRST
FOREACH {
  PRINT "<<UEBERSCHRIFT>>\n"
}
</GIS>

 

Bitte rufen Sie nun das Vorschaufenster auf. Sie werden bei aktiviertem personalisieren und individualisieren folgende Ausgabe sehen: 

...

Nun bauen wir unser Beispiel von oben um einen weiteren Befehl aus. Angenommen, Sie möchten nicht alle vier Überschriften ausgeben, sondern nur die ersten beiden, dann haben Sie den Befehl SHRINK zur Verfügung. Dieser reduziert die Ergebnisliste, z. B.: 

 

Code Block
themeEclipse
languagexml
collapsetrue
  <GIS>
READ <<UEBERSCHRIFT>>
SORT LATEST FIRST
SHRINK "2"
FOREACH { PRINT "<<UEBERSCHRIFT>>\n" }
</GIS>

 

Dies hat zur Folge, dass nur die zwei aktuellsten Überschriften ausgegeben werden. Die Ausgabe wäre dann: 

...

Mit dem Befehl SHRINK BY "FELDNAME" können Sie die Ergebnisliste auf die Einträge reduzieren, die das Feld "FELDNAME" enthalten. Angenommen, File 4 hätte kein TEXT-Feld und Sie würden folgende Befehlssequenz eingeben: 

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<UEBERSCHRIFT>>
SORT LATEST FIRST
SHRINK BY <<TEXT>>
FOREACH { PRINT "<<UEBERSCHRIFT>> " }
</GIS>

 

So wäre die Ausgabe: 

GHI Ueberschrift 1 

...

SHRINK BY <<UEBERSCHRIFT>> IN "A" TO "D" 

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<UEBERSCHRIFT>>
SORT LATEST FIRST
SHRINK BY <<UEBERSCHRIFT>> IN "A" TO "D"
FOREACH { PRINT "<<UEBERSCHRIFT>>\n" }
</GIS>

 

Wenn Sie den Befehl wieder in das Beispiel einfügen, wird folgendes ausgegeben: 

...

erzwingt nach jeder ausgegebenen UEBERSCHRIFT einen Zeilenumbruch. Sie können anstelle der Anführungszeichen auch geschweifte Klammern verwenden. 

 

Code Block
themeEclipse
languagexml
 PRINT {<<UEBERSCHRIFT>><<UEBERSCHRIFT>><<TEXT>>
<<TEXT>> }

}oder
oder
PRINT {<<UEBERSCHRIFT>>\n<<TEXT>>\n}

 

Das ergibt eine Bildschirmausgabe (wenn Sie diese Befehlszeilen in das Beispiel einfügen), die wie folgt aussieht: 

...

Nachdem eine Trefferliste über den READ-Befehl eingelesen wurde, kann man, nachdem die Liste nach beliebigen Kriterien sortiert (SORT) und gefiltert (SHRINK) wurde, diese Ergebnisliste mittels des FOREACH-Befehls durchgehen und Aktionen (PRINT) mit den jeweiligen Treffern durchführen. 

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<UEBERSCHRIFT>>
SORT LATEST FIRST
SHRINK BY "TEXT"
FOREACH {PRINT "<<UEBERSCHRIFT>>\n"}
</GIS>

 

Die FOREACH-Anweisung besteht immer aus dem eigentlichen Befehl FOREACH und den oben fett hervorgehobenen geschweiften Klammern. Die Trefferliste, die mit READ <<UEBERSCHRIFT>> gebildet wurde, wird innerhalb der geschweiften Klammern Eintrag für Eintrag in der entsprechend sortierten Reihenfolge durchgegangen. Alle Anweisungen innerhalb der geschweiften Klammern beziehen sich beim Durchlaufen auf den jeweiligen Eintrag der Trefferliste, das bedeutet, wenn alle Datensätze mit dem Feld <<UEBERSCHRIFT>> eingelesen werden und durch die FOREACH-Schleife gehen, haben Sie Zugriff auf alle Elemente eines Eintrages. So können Sie z. B. zusätzlich zu dem Feld <<UEBERSCHRIFT>> auch gleichzeitig auf alle anderen Datenfelder des jeweiligen Treffers zugreifen. Oben wurde bereits das Beispiel mit den <<TEXT>>-Feldern angeführt. Beim Durchlaufen der Ergebnisliste wird dann nicht nur die Überschrift eines jeden Datensatzes, sondern auch noch das <<TEXT>>-Feld ausgegeben. Sie können generell immer auf ALLE Felder eines Treffers zugreifen. FOREACH-Schleifen können Sie auch beliebig schachteln !!! 

...

Nachdem Sie eine Trefferliste erzeugt haben, haben Sie die Möglichkeit, mit Hilfe des Befehls COPYLIST eine temporäre Kopie zu erzeugen. Wenn Sie die reguläre Liste mit Hilfe des Befehls CLEAR löschen, können Sie die mit COPYLIST erzeugte Liste wieder mit Hilfe des Befehls READLIST zurücklesen. Das folgende Beispiel verdeutlicht die Funktionalität. 

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<UEBERSCHRIFT>>
SORT LATEST FIRST
FOREACH {PRINT "<<UEBERSCHRIFT>>\n"}
PRINT "\n" COPYLIST CLEAR
READ <<TEXT>>
SORT LATEST FIRST
VICE VERSA
FOREACH {PRINT "<<TEXT>>\n"}
READLIST PRINT "\n"
FOREACH {PRINT "<<UEBERSCHRIFT>>\n"}
PRINT "\n"
</GIS>

 

Sie erhalten folgende Ausgabe: 

...

Diese Ausgabe wird durch den COPYLIST- und den READLIST-Befehl bewirkt. Nach dem CLEAR-Befehl im Beispiel wird eine andere Liste in einer anderen Sortierreihenfolge eingelesen. Anschließend wird wieder die zuerst eingelesene Trefferliste durch READLIST reaktiviert und deren Inhalt erneut ausgegeben. Sie können auch die Datenfelder erneut über READ einlesen lassen, COPYLIST und READLIST sind jedoch um Größenordnungen schneller! Wenn Sie mehrere Listen parallel abspeichern möchten, so können Sie den Kopien auch Namen geben und anschließend gezielt auf einzelne Listen zugreifen. Angenommen, Sie haben eine Trefferliste eingelesen und möchten sie unter dem Namen "Liste1" abspeichern, so erfolgt dies durch die folgenden Befehlszeilen: 

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<DIRECTORY>>
COPYLIST "Liste1"
SHRINK "2"
FOREACH {PRINT "<<DIRECTORY>>\n"}
PRINT "\n\n"
READLIST "Liste1"
FOREACH {PRINT "<<DIRECTORY>>\n"}
</GIS>

 

Die Ausgabe wäre folgende: 

...

/a/b/c 

Hier eine Variation: 

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<DIRECTORY>>
COPYLIST "Liste1" SHRINK "2"
FOREACH {PRINT "<<DIRECTORY>>\n"}
PRINT "\n\n"
COPYLIST "Liste2" READLIST "Liste1"
FOREACH {PRINT "<<DIRECTORY>>\n"}
PRINT"\n\n"
READLIST "Liste2"
FOREACH {PRINT "<<DIRECTORY>>\n"}
PRINT"\n\n"
</GIS>

 

Die Ausgabe wäre folgende 

...

Hier ein Beispiel zur Ausgabe von Variablen-Werten:

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
VAR #C1# #0#
PRINT "'#C1#' ist der Wert von C1\n"
ADDVAR #C1# #2#
PRINT "'#C1#' ist der Wert von C1\n"
SUBVAR #C1# #1#
PRINT "'#C1#' ist der Wert von C1\n"
</GIS>

 

Die Ausgabe wäre folgende: 

...

Mit der Befehlssequenz #C1# LISTLENGTH können Sie der Variablen C1 die aktuelle Länge der Trefferliste zuweisen. Angenommen, Sie haben folgende Zeilen eingegeben:

 

Code Block
themeEclipse
languagexml
collapsetrue
 <GIS>
READ <<DIRECTORY>>
VAR #C1# LISTLENGTH
PRINT "#C1# ist die Länge der Liste\n"
</GIS>

 

Diese Angaben hätten folgende Ausgabe zur Folge: 

...

Eine Bedingung (CONDITION) ist eine unäre oder binäre Operation, deren Ergebnis entweder wahr (TRUE, >=1) oder unwahr (FALSE, <1) ist. Eine unäre Operation ist eine Operation mit nur einem Operanden. Eine binäre Operation ist ein Vergleich oder eine beliebige Operation mit zwei Operanden. Innerhalb von Bedingungen können Sie auf beliebige GIS_API -Variablen, auf Datenbank-Feldwerte, EVAL-Blöcke und EXPR-Ausdrücke zurückgreifen, diese beliebig schachteln (Rekursion) und durch Klammerpaare zu komplexeren Bedingungen gruppieren. 

 

Mögliche Operanden: 
Mögliche Operationen: 
<<FELDNAME>> 
AND (b) 
#Wörter# #Buchstaben# 
OR (b) 
#Zahlen# 
NOT (u) 
#VARIABLEN# 
EQUALS (b) 
EXPR-Anweisungen 
LT (less than) (b) 
TRUE 
LE (less equal) (b) 
FALSE 
GT(greater than) (b) 
 
GE(greater equal) (b) 
 
MATCHES (b) 
 
STARTS (b) 
 
ENDS (b) 

 

Am besten werden diese Sachverhalte anhand folgender Beispiele deutlich:

 

Code Block
themeEclipse
languagexml
collapsetrue
<GIS>
READ <<DIRECTORY>>
FOREACH {
IF(<<TEXT>>){
PRINT {Der Artikel unter <<DIRECTORY>> enthält den Text \n <<TEXT>>}
}
ELSE{PRINT "Es gibt keinen Text zu <<DIRECTORY>>" }
}
</GIS>


<GIS>
READ <<FILENAME>>
FOREACH {
IF(<<DIRECTORY>> OR <<TEXT>>){
PRINT {Das File <<FILENAME>> enthält entweder Daten über das DIRECTORY oder den Text\n"}
}
ELSE{PRINT "Es gibt keine Daten zu <<FILENAME>>" }
}
</GIS>

 

Schachteln von IF/ELSE-Bedingungen: 

Wie schon kurz erwähnt, können Sie die Bedingungen mit Hilfe von Klammern beliebig schachteln. 

Beispiel:

 

Code Block
themeEclipse
languagexml
collapsetrue
<GIS>
TRUE VAR #C1# #Testing funktioniert#
IF( (#ABCDEF# ENDS #DEF#) OR (#123# GT #12#)){ PRINT "TRUE\n"
IF(#C1# MATCHES #unktio#){
PRINT "Klappt alles \n\n"
}
}
ELSE{PRINT "FALSE" }
</GIS>

 

Befehls-Übersicht zusätzliche GIS_API-Befehle 

...

ACHTUNG: Bitte achten Sie bei bedingten Verzweigungen (IF/ELSE) darauf, Konditionen immer zu gruppieren! Das heißt, dass Sie Gruppen von Operand-Operator-Operand immer in Klammerpaare setzen müssen. Hier ein Beispiel: 

 

Code Block
themeEclipse
languagexml
IF( ($$VORNAME$$ MATCHES "Peter") AND ($$NAME$$ EQUALS "Test")){}

 

 

Befehle, um Daten in das Profil zurück zu schreiben

...