Simscript III/Dictionnaire des instructions/FUNCTION
L’énoncé function marque le début d’un sous-programme de type fonction. Le corps de la fonction doit se terminer par un énoncé end et doit également avoir un énoncé return with…
Syntaxe : |
|
où f est un nom apparaissant dans un define ... function du preamble et a1, ..., an est une liste d’arguments d’entrée. Par défaut, une fonction est implantée à droite et le mot-clé right est facultatif.
Exemples :
preamble
define toHexa as an integer function with 4 alpha arguments
end '' preamble
''------------------------------------------------------------------------------
main
define 0x80000000, 0xFFFFFFFF as integer variables
define 0x00 = 0, 0x80 = 128, 0xFF = 255 as constants;
let 0xFFFFFFFF = toHexa ( 0xFF, 0xFF, 0xFF, 0xFF);
let 0x80000000 = toHexa ( 0x80, 0x00, 0x00, 0x00);
write 0x80000000, 0xFFFFFFFF
as S 10, "0x80000000 = ", C 8 , /,
S 10, "0xFFFFFFFF = ", C 8 , /
end '' main
''------------------------------------------------------------------------------
'' Converts a four character to an integer, using little-endian form
function toHexa( b4, b3, b2, b1)
define b1, b2, b3, b4 as alpha variables
return with or.f( shl.f(b4, 24), or.f( shl.f(b3, 16), or.f( shl.f(b2, 8), b1)));
end '' toHexa
Dans le cas d’une implantation à gauche, (utilisée à gauche du signe = d’un énoncé let, dans un énoncé yielding d’un sous-programme, ou utilisée dans un énoncé read), le mot-clé left précède l’énoncé function. Dans ce cas, on affecte une valeur à la fonction. Alors, le premier énoncé exécutable de cette fonction à gauche est enter with variable qui permet d’obtenir la valeur affectée à la fonction à gauche, et de l’affecter à variable. Le mode de la valeur affectée à la fonction doit correspondre au mode de la fonction définie dans l’énoncé define ….function dans le préambule.(voir l’énoncé move from)