1 // Copyright (C) 2007-2016 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, or (at your option) any later version.
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
24 // Author : Eric Fayolle (EDF)
27 /* Outils d'Aide au Couplage de Code de Calcul : $Id$ */
32 #define TrueOrFalse int
37 /* Definition d'un type de donnes pour le stockage du */
38 /* des pas de temps */
41 #define FORMAT_TEMPS "%lf"
44 #define FORMAT_TEMPS "%lg"
47 /* Precision relative pour tests d'egalite sur les temps */
50 /* Tailles utilisees lors des transmissions des noms */
51 #define VERSION_LEN 144
53 #define VARIABLE_LEN 144
54 #define INSTANCE_LEN 72
58 /* Tailles maximums */
60 #define ENV_VAR_LEN 256
64 #define MACHINE_LEN 256
65 #define COMMAND_LEN 256
67 #define FICHIER_LEN 256
69 /* Nombre de lignes dans une page du fichier erreur *
71 #define NB_LIGNE_ERREUR 45
72 #define NB_LIGNE_TRACE 45
76 /* Type d'arret d'une instance */
78 #define CP_ANORMALE 11
80 /* Directive de continuation d'une instance */
84 /* Etat d'une instance */
86 #define CP_NON_CONNECTE 23
88 #define CP_EXECUTION 25
89 #define CP_DECONNECTE 26
92 /* Type de variables */
96 #define CP_COMPLEXE 33
100 /* Type de dependance des variables */
102 #define CP_ITERATION 41
103 #define CP_SEQUENTIEL 42
105 /* Send des variables */
109 /* Type des instances */
114 #define CP_ILLIMITE -70
115 #define CP_AUTESP -71
119 #define CP_SUCCINCT 81
120 #define CP_DETAILLE 82
123 /* Mode d'execution */
124 /* La valeur CP_NORMAL definie pour les types */
125 /* est aussi utilisee */
129 /* Type d'interpolation */
130 #define CP_LINEAIRE 100
131 #define CP_ESCALIER 101
134 /* Repere dans cycle de temps */
138 /* Mode de nettoyage des donnees d'un lien */
139 #define CP_TOUTES 120
140 #define CP_AUCUNE 121
143 /* Options configurables */
145 #define CP_ERREURS 132
147 /* Valeurs pour l'option CP_ROUTE */
148 #define CP_ROUTE_NORMAL 133
149 #define CP_ROUTE_DIRECT 134
151 /* Valeurs pour l'option Comportement en cas d'erreur */
153 #define CP_BLOCAGE 136
154 #define CP_MANUEL 137
156 /* Type de requete de lecture */
157 /* La valeur CP_ATTENTE define pour l'etat d'une */
158 /* instance est aussi utilisee */
159 #define CP_IMMEDIATE 141
161 /* Definition des types de lien */
168 /* Codes des entetes des messages (Evenemet *) */
170 #define CONNEXION 1001
171 #define EMISSION 1002
172 #define DECONNEXION 1003
173 #define LECTURE_VARIABLE 1004
174 #define ECRITURE_VARIABLE 1005
175 #define FIN_DE_PAS 1006
176 #define AUIN_FIN_DE_PAS 1007
177 #define EFFACEMENT 1008
178 #define MODE_EXEC 1009
179 #define RUN_N_PAS 1010
180 #define DEF_CODE 1011
181 #define DEF_INSTANCE 1012
182 #define DEF_LIEN 1013
183 #define DEM_VERSION 1014
184 #define SET_OPTION 1015
185 #define DEM_OPTION 1016
186 #define DEM_CODES 1017
187 #define DEM_INSTS_DE_CODE 1018
188 #define DEM_VARIABLES 1019
189 #define DEM_VARS_DE_CODE 1020
190 #define DEM_VARS_DE_INST 1021
191 #define DEM_CARS_DE_VARIABLE 1022
192 #define DEM_CARS_DE_LIEN 1023
193 #define ENV_VALEURS_VARIABLE 1024
194 #define ENV_OPTION 1025
195 #define ENV_CODES 1026
196 #define ENV_INSTS_DE_CODE 1027
197 #define ENV_VARIABLES 1028
198 #define ENV_VARS_DE_CODE 1029
199 #define ENV_VARS_DE_INST 1030
200 #define ENV_CARS_DE_VARIABLE 1031
201 #define ENV_CARS_DE_LIEN 1032
202 #define ENV_TOPOLOGY 1033
203 #define R_ENV_TOPOLOGY 1034
204 #define ENV_MACHINE 1035
205 #define R_ENV_MACHINE 1036
206 #define ENV_CODE 1037
207 #define R_ENV_CODE 1038
208 #define ENV_INSTANCE 1039
209 #define R_ENV_INSTANCE 1040
211 #define R_ENV_VAR 1042
212 #define ENV_LIEN 1043
213 #define R_ENV_LIEN 1044
214 #define ENV_ATTRIBUTS 1045
215 #define R_ENV_ATTRIBUTS 1046
216 #define ENV_VDATA 1047
217 #define R_ENV_VDATA 1048
228 #define P_HOST_DELETE 2000
229 #define P_TASK_EXIT 2001
240 /* Emetteur inconnu */
243 /* Nom de variable inconnu */
246 /* Type entree/sortie incompatible */
252 /* Type de variable incompatible */
255 /* Mode de dependance inconnu */
258 /* Mode dependance incompatible */
261 /* Requete non autorisee */
264 /* Type de deconnexion incorrect */
267 /* Directive de deconnexion incorrecte */
270 /* Nom de code inconnu */
273 /* Nom d'instance inconnu */
282 /* Nombre de valeurs transmises egal a zero */
285 /* Longueur de variable insuffisante */
288 /* L'instance doit s'arreter */
294 /* Coupleur abscent */
297 /* Variable sortante non connectee */
300 /* Nombre de pas a executer egal a zero */
303 /* Machine inconnue */
306 /* COUPLAGE_GROUPE non positionnee */
309 /* Groupe d'instances incorrect */
312 /* Fin du fichier d'entree */
315 /* Erreur de format dans un fichier */
318 /* Requete d'avance de n pas annullee */
319 /* par passage en mode NORMAL */
322 /* Coupleur en mode NORMAL pour une */
323 /* requete RUN_N_PAS ou DEF_* */
326 /* Option inconnue */
329 /* Valeur d'option inconnue */
332 /* Ecriture impossible par effacement */
335 /* Lecture d'une variable non connectee */
336 /* ou n'appartenant pas a un lien VAS */
337 /* ou VAV s'il s'agit d'une sortante */
340 /* Lecture d'une variable d'une instance*/
341 /* deconnectee avec directive CP_ARRET */
344 /* Les lectures sequentielles ne pourront plus */
345 /* etre satisfaites : instance productrice arretee */
348 /* Erreur dans la chaine de declaration */
351 /* Erreur dans l'execution de l'instance ajoutee */
357 /* Erreur detectee au niveau de l'interface de couplage */
361 /* IDM : les deux define suivants ont ete rajoutes a la main*/
363 /* Erreur de mode d'execution non defini */
366 /* Erreur d'instance deconnectee */
369 /* Codes des evenements pour le fichier de trace */
371 /* Debut du couplage */
372 #define DEBUT_COUPLAGE 0
374 /* Fin du couplage */
375 #define FIN_COUPLAGE 1
377 /* Execution d'une instance par Oacc */
380 /* Connexion d'une instance */
383 /* Permission d'emettre accordee a l'instance */
386 /* Requete d'ecriture */
389 /* Requete de lecture */
392 /* Envoi des donnees suite a une requete de lecture */
395 /* Deconnexion d'une instance */
398 /* Requete de fin de pas */
401 /* Requete d'autorisation de fin de pas */
404 /* Requete d'interdiction de fin de pas */
407 /* Requete d'effacement */
410 /* Signal d'arret d'une instance */
413 /* Avis de blocage suite a une requete de lecture */
416 /* Requete de passage en mode pause */
419 /* Requete de passage en mode normal */
422 /* Requete d'execution de n pas */
425 /* Requete de definition d'un code */
428 /* Requete de definition d'une instance */
431 /* Requete de definition d'un lien */
434 /* Requete d'identification de version */
437 /* Requete de demande de la liste des codes */
440 /* Requete de demande des instances d'un code */
443 /* Requete de demande de la liste des variables globales*/
446 /* Requete de demande des variables d'un code */
449 /* Requete de demande des variables d'une instance */
452 /* Requete de demande d'info sur une variable globale */
455 /* Requete de demande des caracteristiques d'un lien */
458 /* Requete de modification d'une option */
461 /* Requete de consultation d'une option */
464 /* Terminaison d'une tache PVM */
467 /* Deconnexion d'une machine */
468 #define HOST_DELETE 32
472 /* Fichier principal de la bibliotheque de couplage */
473 const char * CPMESSAGE[] = {
476 "Variable name unknown",
477 "Different input/output codes in code and supervisor",
478 "Variable type unknown",
479 "Different variable types in code and supervisor",
480 "Dependency mode unknown",
481 "Different dependency modes in code and supervisor",
482 "Unauthorized request",
483 "Unauthorized disconnection request type",
484 "Unauthorized disconnection directive",
486 "Instance name unknown",
490 "Insufficient variable length",
491 "Instance is going to stop",
492 "Unexpected instance stop",
494 "Output variable not connected",
495 "Number of steps to execute is nul",
496 "Non declared computer",
497 "Environment variable COUPLAGE_GROUPE is not set",
498 "Instance group given by COUPLAGE_GROUPE is wrong",
500 "Format error in input file",
501 "Request ignored because of switching to NORMAL mode",
502 "Supervisor is in normal execution mode",
504 "Option value is wrong",
505 "Impossible to write because of an erasing request",
506 "Reading of a variable wrongly connected",
507 "Reading of a variable of an instance disconnected with CP_ARRET",
508 "Sequential reading no more possible",
509 "Error in declaration",
510 "Error in instance launching",
511 "Communication error",
512 "Error in the instance",
513 "Environment variable CAL_MODE is not set",
514 "Disconnected instance",
519 extern const char * CPMESSAGE[];
524 /* Type de variables */
532 /* Macro minuscule majuscule */
533 #define TOUPPER(string) \
535 int i, number = strlen(string);\
536 for (i = 0; i < number; i++) string[i] = toupper(string[i]); \
539 /* Macro inferieur */
540 #define INF(a,b) (a <= b ? a : b)
542 /* Macro superieur */
543 #define SUP(a,b) (a >= b ? a : b)