d6.03.01 Communication avec le Superviseur d’exécution : routines GETXXX#
Résumé :
Ce document décrit succinctement le fonctionnement du Superviseur, il détaille les requêtes des opérateurs au Superviseur à propos du contenu des commandes utilisateur (utilisation des routines GETVXX, GETRES et GETFAC) ou de la description formelle d’une commande dans le catalogue (utilisation des routines GETMXX). Des exemples d’utilisation de ces routines sont traités.
Communication entre les opérateurs et le Superviseur#
Les opérateurs font des requêtes au Superviseur à propos du contenu des commandes de l’utilisateur.
Pour cela ils disposent d’un ensemble de routines leur permettant d’accéder aux arguments des mots-clés:
Requête d’accès aux valeurs des mots clés:
Un ensemble de sous-programmes spécifiques à chaque type connu du superviseur est disponible:
getvis |
Récupération de valeurs entières |
getvr8 |
Récupération de valeurs réelles |
getvc8 |
Récupération de valeurs complexes |
getvid |
Récupération d’un nom de concept |
getvtx |
Récupération de valeurs textes (chaîne de caractères) |
getltx |
Récupération des longueurs des valeurs textes |
Requête d’accès au résultat:
Le sous-programme getres permet d’obtenir le nom utilisateur du résultat ainsi que le nom du type associé connu par le superviseur.
Requête portant sur la composition des commandes dans le fichier de commandes:
getfac |
Récupération du nombre d’occurrence d’un mot-clé facteur |
gettco |
Récupération du type d’un concept. |
gcucon |
Présence d’un concept dans le jeu de commandes |
Description des routines utilisateurs#
Arguments des routines getvxx#
Les routines getvxx permettent de récupérer les valeurs fournies dans un mot-clé simple situé sous un mot-clé facteur, dans la commande courante.
La signature des routines est donc (seul le type des valeurs retournées change):
call getvxx(motfac, motcle, iocc, nbval, vect, scal, nbret, isdefault)
motfac est le nom du mot-clé facteur, “ “ si le mot-clé simple n’est pas sous un mot-clé facteur.
motcle est le nom du mot-clé simple.
Les arguments suivants sont optionnels.
iocc est le numéro d’occurrence du mot-clé facteur.
nbval est le nombre de valeurs à écrire au maximum dans vect.
vect est le vecteur dans lequel vont être écrites les valeurs lues.
scal est la variable réceptacle quand on ne veut lire qu’une valeur.
nbret est le nombre de valeurs effectivement lues si nbret est positif ou nul. Si nbret est négatif, il y avait plus de valeurs que nbval (exemple: l’utilisateur renseigne 3 valeurs, si nbval=2, on aura nbret=-3 et les 2 premières valeurs sont affectées dans le vecteur vect).
isdefault vaut 1 si la valeur a été renseignée par l’utilisateur, 0 s’il s’agit du défaut du catalogue.
Avertissement
isdefault n’est pas pertinent si le mot-clé simple (ou le mot-clé facteur qui le contient) se trouve sous un bloc.
Pour savoir combien de valeurs ont été renseignées et ainsi dimensionner correctement le vecteur vect, on fait habituellement un appel de ce type avec nbval=0:
call getvxx(motfac, motcle, iocc, nbval=0, nbret=nbv)
allocation d’un tableau de taille -nbv, puis:
call getvxx(motfac, motcle, iocc, nbval=-nbv, vect=array)
Traitement des erreurs détectées#
Les principales erreurs détectables à la supervision sont:
le fichier de commande ne contient pas le mot-clé simple recherché:
premier cas: le catalogue de commande propose une valeur par défaut pour le mot-clé: cette valeur est retournée par la routine,
deuxième cas: il n’y a pas de valeur par défaut mais le statut du paramètre est «facultatif» (‘f’): la routine retourne nbret=0,
troisième cas: le paramètre est obligatoirele traitement est interrompu à la phase 1 de l’analyse du fichier de commande (voir Fonctionnement sommaire du Superviseur, page 1).
Une valeur invalide pour iocc: la routine retourne nbret=0
On fait une requête sur un mot clé facteur ou un mot clé simple qui n’existent pas dans le catalogue de la commande (faute de frappe).
Liste des routines getvxx#
getvc8: lecture d’un paramètre de type “C”, nombres complexes. vect et scal sont déclarés complex(kind=8).
getvis: lecture d’un paramètre de type “I”, nombres entiers. vect et scal sont déclarés integer.
getvr8: lecture d’un paramètre de type “R”, nombres réels. vect et scal sont déclarés real(kind=8).
getvtx: lecture d’un paramètre de type “TXM”, chaînes de caractères. vect et scal sont déclarés character(len=*).
getvid: lecture d’un paramètre de type “CO”, concepts. vect et scal sont déclarés character(len=*).
getltx pour obtenir les longueurs des chaînes d’un paramètre de type chaîne de caractères#
But
A partir de la commande courante, du nom d’un mot-clé simple situé sous un mot-clé facteur - de la commande courante - dont on fournit le nom ou situé directement sous la commande courante, la routine GETLTX retourne dans un tableau d’entiers la longueur exacte de chaque chaîne de caractères attachée au mot-clé simple dans le fichier de commande.
La longueur exacte d’une chaîne de caractères est le nombre exact de caractères significatifs (non blancs) composant la valeur attachée au mot-clé simple.
Usage
Dans une routine fortran, GETLTX requiert les arguments suivants:
MOTFAC |
Nom du mot-clé facteur, de la commande courante, dans lequel on cherche le mot-clé simple. Espace blanc si le mot-clé simple MOTCLEest situé directement sous la commande courante. |
MOTCLE |
Nom du mot-clé simple, dans lequel on cherche les valeurs. Le mot-clé simple peut être situé sous un mot-clé facteur de la commande courante, dans un bloc de la commande courante, sous un mot-clé facteur d’un bloc de la commande courante ou directement sous la commande courante. Dans le premier cas, MOTFACne doit pas être blanc. |
IOCC |
Dans le cas où le mot-clé facteur apparaît plusieurs fois, dans la commande courante, IOCCindique le numéro d’occurrence pour lequel l’utilisateur recherche le mot-clé simple; s’il n’y a qu’une occurrence, IOCCdoit être égal à 1. Le nombre d’occurrences du mot-clé facteur peut s’obtenir en utilisant la routine GETFAC(voir page 1). Dans le cas où le mot-clé facteur est blanc, l’argument IOCCest ignoré. |
IARG |
Vaut 0 si la valeur a été renseignée par l’utilisateur, 1 s’il s’agit de la valeur par défaut définie dans le catalogue. |
MXVAL |
Nombre maximum de valeurs retournées, autrement-dit taille du tableau ISVAL(ce nombre peut être déterminé dynamiquement voir p. 1) |
ISVAL |
Tableau contenant les NBVALlongueur des chaînes de caractères retournées; si le mot-clé simple n’est pas trouvé dans le jeu de commandes, le tableau fortran ISALn’est pas modifié. |
NBVAL |
Nombre effectif de valeurs retournées (=0, si les valeurs n’ont pas été trouvées dans le jeu de commande), si le nombre de valeurs présentes dans le fichier de commande est supérieur à MXVAL, la liste des valeurs retournées est tronquée à MXVALvaleurs et NBVALest retourné avec la valeur négative -MXVAL. |
GETRES pour obtenir des informations sur le résultat d’une commande#
But
La routine GETRES, retourne dans des chaînes de caractères, les informations concernant la commande courante:
le nom utilisateur du concept retourné (s’il y en a un),
le type du concept retourné (s’il y en a un),
le nom de la commande.
Par exemple à partir de la commande:
mail=LIRE_MAILLAGE()
L’appel à GETRES
CALL GETRES( nomres, concep, nomcmd )
retourne:
NOMRES avec la valeur ’mail’
CONCEP avec la valeur ’MAILLAGE’
NOMCMD avec la valeur ’LIRE_MAILLAGE’
Usage
Dans une routine fortran, GETRES requiert les arguments suivants:
NOMRES |
Nom donné par l’utilisateur au résultat produit par la commande courante. La casse de ce nom (minuscules ou majuscules) est conservée. Si le nom du résultat figurant dans le fichier est trop long par rapport à la capacité de la variable NOMRES, le superviseur tronque la chaîne renvoyée pour l’adapter à la taille de la variable. Si la commande courante est une procédure - c’est-à-dire une opération sans résultat - NOMRESest mis à blanc. |
CONCEP |
Type du résultatNOMRES; cette information est définie par le développeur de la commande dans le catalogue des commandes (mot-clé sd_prod) Si la commande courante est une procédure - c’est-à-dire une opération sans résultat - CONCEPest mis à blanc. |
NOMCMD |
Nom de la commande courante (son texte sans ses arguments). |
GETFAC pour obtenir le nombre d’occurrences d’un mot-clé facteur#
But
La routine GETFAC retourne le nombre de fois où ce mot-clé facteur apparaît dans la commande courante.
Usage
Dans une routine fortran, GETFAC requiert les arguments suivants:
MOTFAC |
Nom du mot-clé facteur, de la commande courante. |
IOCC |
Nombre d’occurrences du mot-clé facteur. |
GETTCO pour obtenir le type attaché à un concept#
But
A partir du nom d’un concept, résultat produit par une commande, GETTCO retourne le nom de son type. On peut bien sûr consulter GETTCO sur des concepts récupérés comme arguments de mot clé simple, non nécessairement produits par la commande courante.
Usage
Dans une routine fortran, GETTCO requiert les arguments suivants:
NOMCO |
Nom du concept |
TYPECO |
Nom du type attaché au nom du concept |
GCUCON pour tester l’existence d’un concept dans le jeu de commandes#
But
Vérification de l’existence du couple (resul,concep) dans les résultats produits par les étapes précédentes.
Usage
Dans une routine fortran, GCUCON requiert les arguments suivants:
RESUL |
Nom du concept |
CONCEP |
Nom du type attaché au nom du concept |
IRET |
Code retour: >0 si présent, 0 si absent |
Routines d’accès au catalogue des commandes (routines getmxx)#
Les opérateurs peuvent faire des requêtes au Superviseur à propos de la description formelle d’une commande dans son catalogue. Les informations renvoyées ne concernent en rien l’utilisation particulière qui est faite de ces commandes dans le jeu de données transmis à l’exécution.
L’ensemble suivant de sous-programmes est disponible.
GETMAT |
récupération de la liste des mots-clés facteurs d’une commande, telle que décrite dans son catalogue; |
GETMJM |
récupération des informations générales d’un mot-clé facteur; |
GETEXM |
Fonction indiquant si un mot clé, simple ou facteur, est présent dans le catalogue de la commande courante. |
Remarque générale :
En cas d’erreur sur le nom de la commande ou de l’opérateur, on arrête l’exécution du programme.
Description des routines#
GETMATpour la liste des mots clés facteurs de la commande employée#
But
En utilisant le catalogue des commandes – et non le fichier de commandes utilisateur –, la routine GETMAT retourne les informations suivantes concernant le catalogue de la commande courante:
le nombre total de mots-clés facteurs décrits par le catalogue,
la liste des noms de ces mots clés facteurs.
CALL GETMAT( NBTMCL, LMOCLE)
retourne:
NBTMCL=180 le nombre de mots-clés facteurs sous la commande
LMOCLE=(“ELAS”,”ELAS_FO”, …) la liste de chaînes de caractères contenant leurs noms
Usage
Cette routine est uniquement employée par l’opérateur DEFI_MATERIAU afin de récupérer dans le FORTRAN la liste des matériaux permis par le catalogue.
GETMJM pour obtenir des informations relatives à la description d’un mot-clé facteur dans la commande utilisateur courante#
But
La routine GETMJM retourne des informations – depuis le fichier de commandes de l’utilisateur – concernant la \(k\) -ième occurrence du mot-clé facteur dont le nom est passé en argument:
la liste des mots-clés simples du mot-clé facteur demandé,
pour chaque mot clé simple, le type de l’argument attendu (réel, entier …).
Attention :
\(k\) permet de parcourir l’ensemble des mots-clés facteurs mais il n’y a pas d’ordre significatif des mots-clés facteurs dans la commande. En particulier, le nom du mot-clé facteur retourné pour la valeur \(k\) n’est pas forcément le nom du \(k\) -ième mot-clé facteur tel qu’écrit par l’utilisateur. De plus, toutes les conditions de bloc sont supposées vérifiées.
GETEXMpour obtenir la composition d’un mot-clé facteur dans une commande#
But
En utilisant le catalogue des commandes, la fonction GETEXM indique si un mot clé simple est présent dans le catalogue de la commande courante.
Usage
Exemple d’appel pour savoir si le catalogue de la commande courante contient le mot clé MCSIMP :
INDIC = GETEXM( “” , “MCSIMP” )
Exemple d’appel pour savoir si le catalogue de la commande courante contient le mot clé MCSIMP sous le mot clé facteur MCFACT:
INDIC = GETEXM( “MCFACT” , “MCSIMP” )