La commande d'exécution du simulateur (./main ...) possède des arguments, pour spécifier des données en entrée et préciser des options d'exécution.
DIESE prédéfinit quelques arguments standards et propose, par la fonction ParseMainArguments, un moyen d'interpréter leurs valeurs dans la ligne de commande. Par rapport à un développement sous BASIC DIESE, la commande d'exécution d'un simulateur développé sous CONTROL DIESE , comprend les même arguments obligatoires et peut comprendre les mêmes arguments optionnels (voir à ce sujet la documentation de BASIC DIESE, page 'Fonctions globales / Interprétation des arguments de la commande').
Au-delà, la ligne de commande sous CONTROL DIESE peut contenir des arguments nouveaux, que ParseMainArguments ne sait interpréter. CONTROL DIESE fournit donc la fonction C_ParseMainArguments qui invoque ParseMainArguments avant de rechercher dans la ligne de commande la présence éventuelle des arguments propres à CONTROL DIESE.
Au-delà encore, et comme dans un développement avec BASIC DIESE, l'application propose généralement des options d'exécution particulière au domaine étudié. La mise en jeu de ces options est opérée par une fonction, qu'on peut appeler App_ParseMainArgument, dont le principe de codage est exposé dans la documentation de BASIC DIESE. Cette fonction doit invoquer C_ParseMainArguments en son début :
int main (int argc, char* argv[]) { App_ParseMainArguments(argc, argv); ... }; void App_ParseMainArguments (int argc, char* argv[]) { //--------------------------------------------- Boolean stdArgs_ok = C_ParseMainArguments(argc, argv); if(stdArgs_ok) { for (int i=6;i<argc;i++) { if (!strcmp(argv[i], "-w")) gMyTraceWarnings = TRUE; if (!strcmp(argv[i], "-o")) gMyTraceOperations = TRUE; } } }Rôle de C_ParseMainArguments
Dans sa version courante, C_ParseMainArguments teste la présence dans la ligne de commande des arguments suivants, et donne le cas échéant la valeur mentionnée aux variables globales correspondantes :
-RscWarn gTraceResourceWarnings TRACE_RSC_WARN_ON -ActWarn gTraceActivityWarnings TRACE_ACT_WARN_ON -USO gUpperSubsetOption setSize | maxSpecAllocSize -ActSet n gActSetSizeUpperBound n -LogUPS lb[-ub] g_CD_logUPS_begClock lb g_CD_logUPS_endClock ub -ActLog gTraceActivityLogs TRUE -LogMIL lb[-ub] g_CD_logMIL_begClock lb g_CD_logMIL_endClock ub -LogMIL+ lb[-ub] g_CD_logMILp_begClock lb g_CD_logMILp_endClock ub -LogAIL lb[-ub] g_CD_logAIL_begClock lb g_CD_logAIL_endClock ub -LogESA lb[-ub] g_CD_logESA_begClock lb g_CD_logESA_endClock ub -LogESA+ lb[-ub] g_CD_logESAp_begClock lb g_CD_logESAp_endClock ubSi la ligne de commande est main -h, le résultat est l'affichage de la manière d'invoquer la commande, avec un rappel du sens des arguments obligatoires et optionnels.
Les autres arguments reconnus, parmi ceux à partir du rang 6, sont les suivants (on rappelle que l'argument de rang 0 est le module exécutable lui-même, et que les arguments de rang 1 à 5 sont les fichiers d'entrée standard) :
- La présence de l'option -RscWarn (resource-related warnings) permet d'éditer sur la sortie standard des messages sur un constat d'indisponibilité des ressources.
- La présence de l'option -ActWarn (activity-related warnings) permet d'éditer sur la sortie standard des avertissements sur des situations non standard ou peu fréquentes sur les activités (telle que l'interruption d'une activité par l'atteinte de la fin de la période de simulation). On doit chercher une justification à ces situations.
- La présence de l'option -USO (upper subsets option) établit une priorité entre règles de supériorité d'un jeux d'activités sur un autre. Voir la page 'Types prédéfinis ... / Variables globales ... / ... liées aux arguments de la commande'.
- La présence de l'option -ActSet n borne supérieurement la taille d'un jeu d'activités primitives candidat à l'allocation. Voir la page 'Types prédéfinis ... / Variables globales ... / Borne supérieure de la taille ...' pour le sens ds valeurs possibles.
- La présence de l'option -LogUPS lb[-ub] permet d'éditer sur la sortie standard une trace de l'action de la procédure "moteur" d'interprétation du plan d'activités, et des changements d'état d'activités qui en résultent. Les nombres lb et ub sont les bornes de la période simulée dans laquelle la trace est activée.
- La présence de l'option -ActLog complète l'option -LogUPS lb[-ub] en traçant l'action des méthodes du type CheckSonsIf<état> et CheckIfSon<état>.
- La présence de l'option -LogMIL lb[-ub] permet d'éditer sur la sortie standard une trace de l'action de la procédure "moteur" de génération du meilleur jeu d'activités à exécuter en l'instant courant. Les nombres lb et ub sont les bornes de la période simulée dans laquelle la trace est activée.
- La présence de l'option -LogMIL+ lb[-ub] permet d'éditer sur la sortie standard une trace plus détaillée de l'action de la procédure "moteur" de génération du meilleur jeu d'activités à exécuter en l'instant courant.
- La présence de l'option -LogAIL lb[-ub] permet d'éditer sur la sortie standard une trace de l'action de la procédure "moteur" d'exécution du meilleur jeu d'activités à partir de l'instant courant. Les nombres lb et ub sont les bornes de la période simulée dans laquelle la trace est activée.
- La présence de l'option -LogESA lb[-ub] permet d'éditer sur la sortie standard une trace de l'action de la procédure "moteur" d'allocation des ressources à un jeu d'activité candidat, en l'instant courant. Les nombres lb et ub sont les bornes de la période simulée dans laquelle la trace est activée.
- La présence de l'option -LogESA+ lb[-ub] permet d'éditer sur la sortie standard une trace plus détaillée de l'action de la procédure "moteur" d'allocation des ressources, en l'instant courant.