1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // Author : Eric Fayolle (EDF)
26 /* Outils d'Aide au Couplage de Code de Calcul : $Id$ */
31 #define TrueOrFalse int
36 /* Definition d'un type de donnes pour le stockage du */
37 /* des pas de temps */
40 #define FORMAT_TEMPS "%lf"
43 #define FORMAT_TEMPS "%lg"
46 /* Precision relative pour tests d'egalite sur les temps */
49 /* Tailles utilisees lors des transmissions des noms */
50 #define VERSION_LEN 144
52 #define VARIABLE_LEN 144
53 #define INSTANCE_LEN 72
57 /* Tailles maximums */
59 #define ENV_VAR_LEN 256
63 #define MACHINE_LEN 256
64 #define COMMAND_LEN 256
66 #define FICHIER_LEN 256
68 /* Nombre de lignes dans une page du fichier erreur *
70 #define NB_LIGNE_ERREUR 45
71 #define NB_LIGNE_TRACE 45
75 /* Type d'arret d'une instance */
77 #define CP_ANORMALE 11
79 /* Directive de continuation d'une instance */
83 /* Etat d'une instance */
85 #define CP_NON_CONNECTE 23
87 #define CP_EXECUTION 25
88 #define CP_DECONNECTE 26
91 /* Type de variables */
95 #define CP_COMPLEXE 33
99 /* Type de dependance des variables */
101 #define CP_ITERATION 41
102 #define CP_SEQUENTIEL 42
104 /* Send des variables */
108 /* Type des instances */
113 #define CP_ILLIMITE -70
114 #define CP_AUTESP -71
118 #define CP_SUCCINCT 81
119 #define CP_DETAILLE 82
122 /* Mode d'execution */
123 /* La valeur CP_NORMAL definie pour les types */
124 /* est aussi utilisee */
128 /* Type d'interpolation */
129 #define CP_LINEAIRE 100
130 #define CP_ESCALIER 101
133 /* Repere dans cycle de temps */
137 /* Mode de nettoyage des donnees d'un lien */
138 #define CP_TOUTES 120
139 #define CP_AUCUNE 121
142 /* Options configurables */
144 #define CP_ERREURS 132
146 /* Valeurs pour l'option CP_ROUTE */
147 #define CP_ROUTE_NORMAL 133
148 #define CP_ROUTE_DIRECT 134
150 /* Valeurs pour l'option Comportement en cas d'erreur */
152 #define CP_BLOCAGE 136
153 #define CP_MANUEL 137
155 /* Type de requete de lecture */
156 /* La valeur CP_ATTENTE define pour l'etat d'une */
157 /* instance est aussi utilisee */
158 #define CP_IMMEDIATE 141
160 /* Definition des types de lien */
167 /* Codes des entetes des messages (Evenemet *) */
169 #define CONNEXION 1001
170 #define EMISSION 1002
171 #define DECONNEXION 1003
172 #define LECTURE_VARIABLE 1004
173 #define ECRITURE_VARIABLE 1005
174 #define FIN_DE_PAS 1006
175 #define AUIN_FIN_DE_PAS 1007
176 #define EFFACEMENT 1008
177 #define MODE_EXEC 1009
178 #define RUN_N_PAS 1010
179 #define DEF_CODE 1011
180 #define DEF_INSTANCE 1012
181 #define DEF_LIEN 1013
182 #define DEM_VERSION 1014
183 #define SET_OPTION 1015
184 #define DEM_OPTION 1016
185 #define DEM_CODES 1017
186 #define DEM_INSTS_DE_CODE 1018
187 #define DEM_VARIABLES 1019
188 #define DEM_VARS_DE_CODE 1020
189 #define DEM_VARS_DE_INST 1021
190 #define DEM_CARS_DE_VARIABLE 1022
191 #define DEM_CARS_DE_LIEN 1023
192 #define ENV_VALEURS_VARIABLE 1024
193 #define ENV_OPTION 1025
194 #define ENV_CODES 1026
195 #define ENV_INSTS_DE_CODE 1027
196 #define ENV_VARIABLES 1028
197 #define ENV_VARS_DE_CODE 1029
198 #define ENV_VARS_DE_INST 1030
199 #define ENV_CARS_DE_VARIABLE 1031
200 #define ENV_CARS_DE_LIEN 1032
201 #define ENV_TOPOLOGY 1033
202 #define R_ENV_TOPOLOGY 1034
203 #define ENV_MACHINE 1035
204 #define R_ENV_MACHINE 1036
205 #define ENV_CODE 1037
206 #define R_ENV_CODE 1038
207 #define ENV_INSTANCE 1039
208 #define R_ENV_INSTANCE 1040
210 #define R_ENV_VAR 1042
211 #define ENV_LIEN 1043
212 #define R_ENV_LIEN 1044
213 #define ENV_ATTRIBUTS 1045
214 #define R_ENV_ATTRIBUTS 1046
215 #define ENV_VDATA 1047
216 #define R_ENV_VDATA 1048
227 #define P_HOST_DELETE 2000
228 #define P_TASK_EXIT 2001
239 /* Emetteur inconnu */
242 /* Nom de variable inconnu */
245 /* Type entree/sortie incompatible */
251 /* Type de variable incompatible */
254 /* Mode de dependance inconnu */
257 /* Mode dependance incompatible */
260 /* Requete non autorisee */
263 /* Type de deconnexion incorrect */
266 /* Directive de deconnexion incorrecte */
269 /* Nom de code inconnu */
272 /* Nom d'instance inconnu */
281 /* Nombre de valeurs transmises egal a zero */
284 /* Longueur de variable insuffisante */
287 /* L'instance doit s'arreter */
293 /* Coupleur abscent */
296 /* Variable sortante non connectee */
299 /* Nombre de pas a executer egal a zero */
302 /* Machine inconnue */
305 /* COUPLAGE_GROUPE non positionnee */
308 /* Groupe d'instances incorrect */
311 /* Fin du fichier d'entree */
314 /* Erreur de format dans un fichier */
317 /* Requete d'avance de n pas annullee */
318 /* par passage en mode NORMAL */
321 /* Coupleur en mode NORMAL pour une */
322 /* requete RUN_N_PAS ou DEF_* */
325 /* Option inconnue */
328 /* Valeur d'option inconnue */
331 /* Ecriture impossible par effacement */
334 /* Lecture d'une variable non connectee */
335 /* ou n'appartenant pas a un lien VAS */
336 /* ou VAV s'il s'agit d'une sortante */
339 /* Lecture d'une variable d'une instance*/
340 /* deconnectee avec directive CP_ARRET */
343 /* Les lectures sequentielles ne pourront plus */
344 /* etre satisfaites : instance productrice arretee */
347 /* Erreur dans la chaine de declaration */
350 /* Erreur dans l'execution de l'instance ajoutee */
356 /* Erreur detectee au niveau de l'interface de couplage */
360 /* IDM : les deux define suivants ont ete rajoutes a la main*/
362 /* Erreur de mode d'execution non defini */
365 /* Erreur d'instance deconnectee */
368 /* Codes des evenements pour le fichier de trace */
370 /* Debut du couplage */
371 #define DEBUT_COUPLAGE 0
373 /* Fin du couplage */
374 #define FIN_COUPLAGE 1
376 /* Execution d'une instance par Oacc */
379 /* Connexion d'une instance */
382 /* Permission d'emettre accordee a l'instance */
385 /* Requete d'ecriture */
388 /* Requete de lecture */
391 /* Envoi des donnees suite a une requete de lecture */
394 /* Deconnexion d'une instance */
397 /* Requete de fin de pas */
400 /* Requete d'autorisation de fin de pas */
403 /* Requete d'interdiction de fin de pas */
406 /* Requete d'effacement */
409 /* Signal d'arret d'une instance */
412 /* Avis de blocage suite a une requete de lecture */
415 /* Requete de passage en mode pause */
418 /* Requete de passage en mode normal */
421 /* Requete d'execution de n pas */
424 /* Requete de definition d'un code */
427 /* Requete de definition d'une instance */
430 /* Requete de definition d'un lien */
433 /* Requete d'identification de version */
436 /* Requete de demande de la liste des codes */
439 /* Requete de demande des instances d'un code */
442 /* Requete de demande de la liste des variables globales*/
445 /* Requete de demande des variables d'un code */
448 /* Requete de demande des variables d'une instance */
451 /* Requete de demande d'info sur une variable globale */
454 /* Requete de demande des caracteristiques d'un lien */
457 /* Requete de modification d'une option */
460 /* Requete de consultation d'une option */
463 /* Terminaison d'une tache PVM */
466 /* Deconnexion d'une machine */
467 #define HOST_DELETE 32
471 /* Fichier principal de la bibliotheque de couplage */
474 char * CPMESSAGE[] = {
477 "Nom de la variable inconnu",
478 "Code entree/sortie differents dans le coupleur et dans le code",
479 "Type de variable inconnu",
480 "Types de variable differents dans le coupleur et dans le code",
481 "Mode de dependance inconnu",
482 "Modes de dependance differents dans le coupleur et dans le code",
483 "Requete non autorisee",
484 "Type de deconnexion incorrect",
485 "Directive de deconnexion incorrecte",
486 "Nom de code inconnu",
487 "Nom d'instance inconnu",
488 "Requete en attente",
490 "Nombre de valeurs transmises egal a zero",
491 "Longueur de variable insuffisante",
492 "L'instance doit s'arreter",
493 "Arret anormal d'une instance",
494 "Coupleur abscent, execution manuelle",
495 "Variable sortante non connectee",
496 "Nombre de pas a executer egal a zero",
497 "Machine non declaree",
498 "La variable d'environnement COUPLAGE_GROUPE n'est pas positionnee",
499 "Le groupe d'instances indique par COUPLAGE_GROUPE est incorrect",
500 "Fin du fichier d'entree",
501 "Erreur de format dans le fichier d'entree",
502 "Requete annulee a cause du passage en mode NORMAL",
503 "Le coupleur est en mode d'execution normal",
505 "Valeur d'option incorrecte",
506 "Ecriture impossible a cause d'une requete d'effacement",
507 "Lecture d'une variable incorrectement connectee",
508 "Lecture d'une variable d'une instance deconnectee avec CP_ARRET",
509 "Lectures sequentielles plus satisfaites",
510 "Erreur dans la chaine de declaration",
511 "Erreur dans le lancement de l'instance ajoutee",
513 "Erreur detectee au niveau de l'instance",
518 extern char * CPMESSAGE[];
523 /* Type de variables */
531 /* Macro minuscule majuscule */
532 #define TOUPPER(string) \
534 int i, number = strlen(string);\
535 for (i = 0; i < number; i++) string[i] = toupper(string[i]); \
538 /* Macro inferieur */
539 #define INF(a,b) (a <= b ? a : b)
541 /* Macro superieur */
542 #define SUP(a,b) (a >= b ? a : b)