Routinen


Die wichtigste Organisationsform in einem Skript ist eine Routine. Alle Anweisungen, die fuer einen Bereich arbeiten, koennen in Routinen zusammengefasst werden.


Name der Routine


mit "on" wird einer Routine ein Name zugewiesen anhand dessen Applescript die Routine finden wird.


Parameter der Routine


Nach dem Namen werden die Parameter eingerichtet. Parameter ermoeglichen also die Datenuebergabe an eine Routine.


Ablauf der Routine


Nachdem die Routine eingerichtet ist, werden die Anweisungen angegeben, die in dieser Routine ausgefuehrt werden sollen.


Variablen der Routine


Eine Routine hat Variablen, die voellig unabhaengig von denen vom Hauptskript behandelt werden. Sie sind also lokale Variablen. Man kann aber globale Variablen angraben und auch andere Eigenschaften des Skripts.


Rueckgabe von Werten


Eine Routine kann auch Daten zurueckgeben. Hierzu benutzt man das Schluesselwort "return".


Beispiel

on ItemPosition for theItem out of theList
   repeat with n from 1 to (count of theList)
   if item n of theList is theItem then
        return n
   end if
   end repeat
   return 0
end ItemPosition

set theItem to "Lisa"
set p to ItemPosition for theItem ¬
   out of {1, 2, "Carrie", "Ellen", "Lisa"}
if p is not 0 then
   display dialog (theItem & " steht an " & p & "ter Stelle!")
else
   display dialog (theItem & ¬
   " konnte nicht gefunden werden!")
end if

In diesem Beispiel haben wir schon etwas verwendet, was man benannte Parameter nennt. Man kann Routinen prinzipiell in zwei Arten einteilen in "Routinen mit benannten Parametern" und "Routinen mit aufgelisteten Parametern".


Routinen mit benannten Parametern


Hier bekommen die Parameter einen Titel.
Syntax

( on | to ) RoutinenName ¬
[ [ of | in] DirekteParameterVariable ] ¬
[ ParameterTitel ParameterVariable] ... ¬
[ given Titel: ParameterVariable [, Titel: ParameterVariable ] ] ...¬
[ global Variable [, Variable ] ... ]
[ local Variable [, Variable ] ... ]
[ Anweisung ] ...
end [ RoutinenName ]

Es gibt immer genau einen direkten Parameter, dann kommen benannte Variablen, fuer die folgende Titel zur Verfuegung stehen:

above, against, apart, from, around, aside, at, below, beneath, beside, between, by, for, instead of, into, on, onto, out of, over, thru (oder through), under


Beispiel

on ConvertTemperature from theTemp to theMeasure
   if theMeasure = "Celsius" then
     return (theTemp - 32) * 5 / 9
   else if theMeasure = "Fahrenheit" then
     return theTemp * 9 / 5 + 32
   else
     return "Unbekannte Temperatur"
   end if
end ConvertTemperature

ConvertTemperature from 212 to "Celsius"

Neben diesen auf diese Art betitelten Variablen kann man mit "given" Titel an Variable vergeben.

Routinen mit aufgelisteten Parametern


Man kann Routinen aber auch einfach eine Liste Parameter mitgeben.

Syntax

( on | to) RoutinenName ¬
( [ ParameterVariable [, ParameterVariable ] ... ] )
[ global Variable [, Variable ] ... ]
[ local Variable [, Variable ] ... ]
[ Anweisung ] ...
end [ RoutinenName ]

Hier werden die Parameter einfach nacheinander eingegeben. Eine Routine muss im Prinzip keine Parameter enthalten. Dann laesst man die Klammer einfach leer.