# FileMaker Script

FileMaker Script ist eine Skriptsprache des US-amerikanischen Unternehmens FileMaker, Inc. Sie ist ein Bestandteil des Datenbanksystems FileMaker. FileMaker Script dient dazu, Anwendungen innerhalb der Datenbank-Umgebung FileMaker zu steuern und zu automatisieren.

## Merkmale

Obwohl es sich bei FileMaker um ein Datenbank-System handelt, dient die Programmiersprache FileMaker Script nicht in erster Linie dazu, Datenbank-Abfragen (Queries) zu formulieren, sondern sie ist vielmehr eine Art Makro-Sprache, mit der sich komplette Abläufe in Datenbank-Anwendungen steuern lassen.
Dies zeigte sich noch deutlich in den früheren Versionen des Datenbank-Systems, wo die Scripts aus einer vorgefertigten Befehlsliste zusammen geklickt werden mussten. Inzwischen ist die Sprache, sowohl was den Befehlsumfang, als auch das Programmierkonzept angeht, deutlich erweitert worden und flexibler geworden.
Die Programmierung findet innerhalb des sogenannten Script Arbeitsbereichs statt. Dieser stellt ein zentrales Editorfenster für alle Scripts in einer FileMaker Datenbank-Datei zur Verfügung. Daneben existiert der Formel-Editor, in dem Verweise auf Datenbank-Felder eingegeben und beliebig komplexe Berechnungen programmiert werden. Der Formel-Editor kommt überall dort zum Einsatz, wo Parameter innerhalb von Scripts verwendet werden.
Alle Scripts existieren als proprietäre Objekte innerhalb einer Datenbank-Datei zusammen mit dem Datenbank-Schema, der Benutzeroberfläche der Anwendung und den eigentlichen Daten. Das Konzept sieht vor, dass sich Unter-Scripts auch in anderen Datenbank-Dateien über Datei-Verweise aufrufen lassen.
Zum Aufrufen von Scripts stehen unterschiedliche Methoden zur Verfügung:
* Aufruf über einen Menu-Eintrag
* Aufruf über ein als Button definiertes Objekt in der Benutzeroberfläche der Anwendung
* Aufruf von einem anderen Script
* Aufruf über einen Ereignis-Trigger
* Aufruf über einen Server-Zeitplan
* Aufruf über eine URL mit dem FileMaker URL-Schema
* Aufruf über die FileMaker Data API (REST-API) auf dem Server
* Aufruf über externe Automatisierungs-Trigger (z. B. aus AppleScript)
Scripts innerhalb von FileMaker können in der lokal geöffneten Client-Datei ausgeführt werden, oder als Batch-Verarbeitung auf einem FileMaker Server.
Die allermeisten Befehle von FileMaker Script laufen plattformneutral auf allen Clients unter Mac OS X, Windows und iOS. Viele Befehle werden darüber hinaus auch unter WebDirect im Browser unterstützt.
In der Variante FileMaker Pro Advanced bietet das Datenbanksystem weitere Programmier-Hilfsmittel an. Mit dem Script Debugger lassen sich zur Laufzeit Scripts im Einzelschritt-Modus ausführen. Variableninhalte und Datenfelder werden dabei in einem separaten Fenster angezeigt.

## Script Parameter

Für die Übergabe von Daten an das Script steht ein Script-Parameter in Form eines Text-Strings zur Verfügung. Der Text-String kann in Form einer durch Zeilenumbrüche getrennten Liste mehrere Werte enthalten.
Beim Beenden des Scripts kann in gleicher Weise ein Script-Ergebnis an das aufrufende Script zurückgegeben werden. Auch hier erfolgt die Übergabe in Form eines Text-Strings.
Grundsätzlich ist es dem Entwickler überlassen, wie er den Script-Parameter zur Übergabe von komplexeren Datenstrukturen nutzt. In der Vergangenheit gab es dazu eine Reihe von Konventionen aus der Entwickler-Community. Mit Hilfe von dafür entwickelten Custom-Functions konnten mehrteilige Datenstrukturen automatisiert in einen String zur Parameter-Übergabe verpackt und innerhalb des Empfänger-Scripts automatisiert wieder ausgepackt werden.
Mit der Einführung von nativen JSON-Objekten in FileMaker seit Version 16 hat sich in der Entwickler-Community eine neue Herangehensweise etabliert, bei der die Parameter-Übergabe mit Hilfe eines JSON-Strings durchgeführt wird. Dies erhöht die Flexibilität wesentlich und schafft zugleich einen allgemeingültigen Rahmen.

## Variablen

Variablen sind typenlos und kommen in drei unterschiedlichen Ausprägungen zum Einsatz:
* $Var = lokale Variable (innerhalb desselben Scripts)
* $$Var = globale Variable (innerhalb derselben Datei)
* Var = lokale Variable (Parameter innerhalb einer CustomFunction oder innerhalb einer SetzeVars-Anweisung)

## Datentypen

Ausgehend von den zur Verfügung stehenden Typen im Datenbankschema verwendet FileMaker Script die folgenden Datentypen:
* Text
* Zahl
* Datum
* Zeit
* Zeitstempel
* Medien (Blob)
* JSON
Es besteht die Möglichkeit, Datentypen in Form eines eindimensionalen Array zu adressieren – in FileMaker Script Wiederholfelder genannt.

## Kontrollstrukturen

FileMaker Script kennt die folgenden Kontrollstrukturen:
* Wenn -> Ende (wenn)
* Wenn -> Sonst -> Ende (wenn)
* Wenn -> Sonst, Wenn -> Ende (wenn)
* Schleife (Anfang) -> Schleife (Ende)
* Schleife (Anfang) -> Verlasse Schleife wenn -> Schleife (Ende)
* Aktuelles Script verlassen
* Alle Scripts abbrechen