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)