MCO 305 Projektierungshandbuch
Der RND Befehl für Ganzzahlen wurde korrigiert und arbeitet nun auch für negative Zahlen.
a = -100
b = a rnd 15 // liefert nun korrekt –7
Weiterhin wird ein Cast Operator unterstützt. So können Sie explizit Ausdrücke umwandeln, z.B.:
a = ((long) y) – 4
y = (double) a
Falls notwendig wandelt der Compiler intern Ausdrücke um. Wenn z.B.
y = a * 2.0
geschrieben wird, wobei a eine Long Variable und y eine Double Variable ist, wird das a in Double
gewandelt, bevor die Multiplikation ausgeführt wird. Aber seien Sie vorsichtig! Wenn Sie
y = a % 2
schreiben, wird das Integer a zuerst durch 2 geteilt (Integer Arithmetik) und dann das Ergebnis nach
Double konvertiert, bevor es dem y zugewiesen wird..
Funktionen
APOSS unterstützt Funktionen und lokale Variablen. Funktionen können vom Typ LONG oder DOUBLE sein.
Zulässig sind maximal 100 Parameter. Funktionen müssen deklariert sein, bevor sie benutzt werden.
Entweder wird die Funktion zuerst deklariert oder es wird eine Deklarations-Anweisung benutzt (siehe
Beispiele unten).
Funktionen müssen immer einen Rückgabetyp von entweder LONG oder DOUBLE beinhalten. VOID
Funktionen werden nicht unterstützt.
Der Anweisungsteil der Funktion muss in geschweiften Klammern stehen.
Alle Variablen, die innerhalb einer Funktion definiert sind, sind lokal. Das heißt, sie sind außerhalb der
Funktion nicht zu sehen.
Lokale Variablen werden temporär im Stack gespeichert. Daher kann das Definieren vieler lokaler Variablen
oder lokaler Arrays zum Überlaufen des Stacks führen (siehe Stack-Größe in Compiler Optionen).
long test_func (long a, long b, double c) ;
...
wert = test_func(a,b,c)
...
long test_func(long a, long b, double c)
{
long result, tmpval
....
return(result)
}
Funktionen können LONG oder DOUBLE Variablen (oder Ausdrücke) mittels „Wert" als Parameter hand-
haben. Das heißt, dass jene Parameter innerhalb der Funktion lokal definiert sind.
Arrays können auch ausgeführt werden, und zwar mittels „Referenz". Dies ermöglicht es, das ursprüngliche
Array innerhalb der Funktion zu modifizieren.
DIM test[100]
long modi(long[] myarray, long index)
{
myarray[index] = myarray[index] * 10
return(index)
}
...
modi(test,2)
// Element 2 von test wird mit 10 multipliziert
ACHTUNG!:
Funktionen werden ab MCO 5.00 unterstützt.
174
__ Programmieren mit APOSS __
// Einsatz der Funktion
// Funktions-Definition
// local variables
// Rückgabe des Wertes der Funktion
®
MG.33.L5.03 – VLT
ist ein eingetragenes Warenzeichen von Danfoss.
// Deklarations-Anweisung