Cet énoncé, qui ne peut apparaître que dans le préambule (preamble), établit des priorités d’exécution entre plusieurs processus d’une même classe dans le cas où ils se trouvent activés simultanément (même heure d’activation time.a). Elle doit se situer après la déclaration des attributs utilisés pour définir les priorités (phrase every de la rubrique processes).
formula_1
"Nom_Processus "est un processus et "Attribut" est un attribut (de priorité) qui a dû être déclaré auparavant dans un "every "Nom_Processus "has a "Attribut"...". Les phrases optionnelles "then by" permettent d’ajouter d’autres attributs de priorité pour résoudre les conflits en cas d’égalité des attributs précédents.
Il faut savoir que lorsque plusieurs processus ont la même heure d’activation (attribut time.a identique sur 16 digits), ils sont exécutés dans l’ordre correspondant aux règles suivantes :
Voir à priority order pour un exemple complet.

Simscript III/Dictionnaire des instructions/CALL

L’énoncé call appelle un sous-programme de type routine ("Sous_Programme"), process method ("Méthode_Processus"), ou method ("Méthode d’un objet").
 giving introduit la liste des paramètres d’entrée et yielding celle des paramètres de sortie.
Exemple :
call Entrer(Accès_Au_Tablier(Pont))(PR);
call Demander (Pont) (Unités_Demandées, PR);
call Libérer(Accès_Au(Pont));
call Quitter(Accès_Au_Tablier(Pont))(_En_Secondes);
call Synchroniser(Véhicule)(2, 1);
call Attendre_Le(Feu(Origine(Véhicule)))("Vert");
call Voyager
 giving Distance, Vitesse_Moyenne
 yielding Durée
call Imprimer_Paramètres_Distribution (Nombre, Moyenne, Ecart_Type,
 Maximum, Minimum, Fréquence(*),
 "Distribution uniforme (sim_gen_rand_well512 -- l’>Écuyer)",
 Hmin, Hmax, Hdelta);

Simscript III/Dictionnaire des instructions/CANCEL

L’énoncé cancel retire un process notice de l’échéancier :
"Nom_Processus" est un processus déclaré dans le preamble. La forme "cancel "Nom_Processus" suppose que la variable globale "Nom_Processus" pointe effectivement sur le processus de type "Nom_Processus" que l’on veut retirer. Sinon on doit utiliser la forme "cancel the "Nom_Processus "called "P"" dans laquelle le pointeur est dans "P".
Attention : utiliser cancel uniquement dans le cas où l’on veut soit détruire (par destroy), soit modifier la date d’activation (par reactivate the) d’un processus précédemment créé par activate mais qui n’est pas encore actif (qui n’a pas encore commencé à s’exécuter : son attribut sta.a vaut 0).
Exemple :

Simscript III/Dictionnaire des instructions/CLASS

Un bloc begin class .. end déclare une classe et doit apparaître dans le préambule (preamble). Il est suggéré de terminer l’énoncé end par un commentaire identifiant la classe. Les attributs, les méthodes et les ensembles sont spécifiés à l’intérieur du bloc.Pour chaque déclaration de classe, un mode référence du nom de la classe (reference) est implicitement défini.
Une classe peut comporter une partie publique et une partie privée. La partie publique est déclarée dans le préambule public (public preamble) et la partie privée est déclarée dans le préambule privé (private preamble). Les attributs, les méthodes, les ensembles peuvent être déclarés dans un préambule public, auquel cas, ils sont publics et peuvent être importés par d’autres modules ou sous-systèmes ; dans le cas contraire (déclarés dans le préambule privé), ils sont privés. Les classes de base d’une classe publique peuvent être déclarées dans un préambule privé.
formula_1
Exemple :
begin class Ressource
 every Ressource
 has a Unités_Totales, 
 an Unités_Acquises, 
 an Unités_Disponibles method, 
 an Attendre_Pour method, 
 a nettoyer method, and 
 owns a Requête'FileAttente 
 define Unités_Totales as an integer variable 
 define Unités_Acquises as an integer variable monitored on the left 
 define Unités_Disponibles as an integer method 
 define attendre_Pour as a method 
 given 2 integer values"Unités requises et priorité 
 before destroying a Ressource, call nettoyer 
end ‘‘Ressource
begin class Requête
 every Requête
 has a Unités, 
 a Priorité, 
 a Le_Processus, and 
 belongs to a FileAttente
 define Unités, Priorité as integer variables 
 define Le_Processus as a pointer variable 
 define FileAttente as a set ranked by high Priorité
end‘‘Requête
begin class Caissier
 every Caissier
 is a Ressource,
 has a Nom,
 a Servir_Client method
 define Servir_Client as a method
 yielding 1 real value ‘‘Temps d’attente en minutes
 define Nom as a text variable
 accumulate Travail_Moyen_Journalier as the Journalier mean,
 Travail_Moyen as the mean of Unités_Acquises
 accumulate Longueur_Moy_File_Journalière as the Journalier mean,
 Longueur_Max_File_Journalière as the Journalier maximum,
 Longueur_Moy_File as the mean,
 Longueur_Max_File as the maximum,
 Histo_File ( 0 to 20 by 1) as the histogram of N.FileAttente
 the class
 has a Temps_Moyen_Service ‘‘En minutes
 define Temps_Moyen_Service as a real variable
end ‘‘Caissier

Simscript III/Dictionnaire des instructions/CLOSE

L’énoncé close ferme un fichier ouvert avec l’énoncé open.
Exemple :
close unit.StdIn

Simscript III/Dictionnaire des instructions/COMPUTE

L’énoncé compute permet de calculer des quantités statistiques sur un ensemble de valeurs défini par une boucle for (ou while ou until).
"x "doit être un attribut d’entité(s) permanente(s) ou un attribut d’entité temporaire.
"Nom"1...,"Nom"n sont des noms de variables qui doivent être déclarées avant le compute et qui donnent en fin de boucle les quantités demandées par les mots-clés de l’énoncé.
Voici les mots clés et les calculs effectués par un compute:
Voici maintenant quelques exemples:
for i = 1 to 10, compute TOTAL = sum of x(i)
for each Canal called i,
 for each Sens called j,
 do
 compute R0Moy as the mean,
 R0Max as the maximum,
 JMax as the max(j) of R0(i, j)
 loop
===> Si l'on veut aussi récupérer le IMax, il faut ajouter :
for each Sens called J,
 for each Canal called I,
 compute IMax as the max(I) of R0(I, J)
for each Pompe,
 compute Plus_Courte_File as the minimum of N.Q.Pompe (Pompe)
Après la boucle, Plus_Courte_File contient la longueur de la plus courte file
for each Pompiste,
 compute Meilleur_Pompiste as the minimum (Pompiste) of N.Q.Pompiste (Pompiste)
Après la boucle, Meilleur_Pompiste contient le numéro de la plus courte file d'attente de pompiste
for each Pompiste,
 request 1 unit of Pompiste (Meilleur_Pompiste)
for each Vol in Départ,
 with Temps_Départ < 1200,
 compute Passager_Max as the maximum,
 Passager_Min as the minimum,
 Vol_Max as the maximum (vol)
 Vol_Min as the minimum (vol) of Nb_Passager (vol))
Après la boucle,

Simscript III/Dictionnaire des instructions/CREATE

L’énoncé create alloue une zone mémoire pour les attributs d’un exemplaire spécifié d’une entité temporaire, et assigne un pointeur à cette zone mémoire. De plus, tous les attributs sont initialisés à zéro
"Entité_Temporaire "a été être déclaré dans le preamble (par un "every"..., sous la rubrique temporary entities).
Attention, très important : si "called "Variable_Pointeur"" est omis, le pointeur de l’entité est mis dans une variable globale (de type entier) de même nom que l’entité. C’est le cas le plus courant. On manipule alors les attributs de l’entité/objet en faisant référence à cette variable (simplicité d’écriture); par exemple :
create a Paquebot
if Coque(Paquebot) <> "BONNE"
 call Naviguer ;
endif
Mais, si entre le "create" et le "if" d’autres bateaux sont créés, le test portera sur le dernier Bateau créé. D’où l’existence de la "forme longue" :
dans laquelle "France_II" sera une variable entière (pointeur), éventuellement indicée, le plus souvent locale, qui contiendra le pointeur de l’entité que l’on vient de créer. Ce cas ne se produit en fait que lorsqu’on doit manipuler plusieurs exemplaires d’une même entité temporaire dans une même routine, ce qui est rare...

Simscript III/Dictionnaire des instructions/CREATE EACH