IwanScript
IwanScript

Mit der Einführung von IWAN Script wurde die Steuerung des Mapservers wesentlich erweitert und vereinfacht. Es handelt sich dabei um ASCII Dateien mit der Extension ".iws". Diese werden durch einen HTTP Aufruf durch den Server ausgeführt. Die Übernahme der unter Datenzugriff vorgestellten Befehle, wie z.B. zur Ebenenerstellung, aus dem alten Parser wurde *nicht* direkt in IwanScript aufgenommen. Für die Ausführung dieser steht die Funktion ExecOld zur Verfügung. So konnte die Kompatibilität zu vorhandenen Projekten vollständig erhalten bleiben.

Allgemeine Syntaxregeln und Hinweise
  • Codierung
    Einige Grundregeln:
    - keine Leerzeichen innerhalb von Anweisungen
    - alle Ausgabe sollten explicit über PRINT erfolgen
    - Funktionen unterscheiden *nicht* nach Groß-Kleinschreibung
    - Variablennamen *unterscheiden* nach Groß-Kleinschreibung
    - Go; und End; sind exakt so anzugeben und können nicht verschachtelt werden
    - Negative Zahlen (-10) müssen z.Z. noch in Hochkomma geschrieben werden
    - Dezimaltrennzeichen ist immer ein Punkt
    - Alle Rückgabewerte von Funktionen werden immer einem L-Wert zugewiesen, wurde kein L-Wert angegeben erfolgt die Ausgabe der Funktion in den HTML-Stream (z.B. not(true); - Schreibt "false" in die Ausgabedatei, ret=not(true); - weist der Vari ret den Wert false zu)
    - Alle Namen der mittels POST oder GET übermittelten Argumente werden in Großbuchstaben festgelegt 

  • Variablen
    ... müssen nicht deklariert werden. Bei der ersten Zuweisung wird automatisch eine Variable angelegt.
    Zu Beachten ist, das eine einmal deklarierte Variable Skriptweit sichtbar ist. Datentypen existieren ebenfalls nicht (ausgenommen sind Objekt-Variablen, diese erfordern aber ebenfalls keine besondere Deklaration). 

    Es existieren drei verschiedene Variablentypen, gekennzeichnet durch einen Präfix:
$ diese Variablen stellen alle evtl. in der Clientanforderung übergeben Werte dar (GET,POST); es wird nicht zwischen Form- oder Querystring Argumenten unterschieden
^ diese Variablen sind Serverglobal, es können keine Objekte gespeichert werden (ab Version 3.1.0.200 verfügbar)
sonst. alle andere Präfixe kennzeichnen Skript-Lokale Variablen

Variablen dürfen nicht den Namen eines Schlüsselwortes oder einer Funktion haben. 

  • Kommentare
    Kommentare werden durch // oder durch /* eingeleitet. Im ersten Fall wird der Rest der Zeile, im zweiten Fall wird alles bis zum schließenden */ als Kommentar gewertet. 

  • Funktionsargumente
    Argumente können von Funktionen auf zwei verschieden Arten ausgewertet werden:
    - Anhand der Reihenfolge der Paramter
    - durch benannte Parameter
    Welche Form der Argumentangaben bei der jeweiligen Funktion erforderlich ist, entnehmen Sie bitte der Dokumentation.

    Benannte Argumente weisen einige Besonderheiten auf.
    1. Die Schreibweise erfolgt in der Form ArgumentName:ArgumentWert. Wichtig zu beachten dabei ist, das der Argumentwert entweder eine Konstante oder eine Variable ist. Werte können nicht aus Funktionsaufrufen bestehen. Z.B. funktioniert folgende Schreibweise *nicht*:f1(Name:"Na"+"me") 
    Einem Funktionsaufruf können maximal 32 benannte Argumente übergeben werden (vor Version: 3.3.2 nur 20).