* DYNAMODE PROCEDUR NOBODY 92/01/01 00:00:00 001 AMORT/'LISTREEL' ENT1/'ENTIER ' CHP1/'CHPOINT ' CHP2/'CHPOINT ' SOLPRE/'SOLUTION' TAB1/'TABLE ' TAB2/'TABLE ' TAB3/'TABLE ' TAB4/'TABLE ' TAB5/'TABLE ' ; ************************************************************************ * * D Y N A M O D E * --------------- * * FONCTION: * --------- * * CALCUL DE LA REPONSE DYNAMIQUE D'UNE STRUCTURE SELON LE SCHEMA * SUIVANT: * 1) PROJECTION SUR LA BASE MODALE, * 2) INTEGRATION EXPLICITE EN TEMPS, * 3) RECOMBINAISON MODALE DE LA REPONSE. * * PHRASE D'APPEL (EN GIBIANE): * ---------------------------- * * RESU = DYNAMODE 'OPERAT' TEMPCALC BAS1 (AMORT) * ('BLOC' NBLOC) ('DEPL' CHDEP) ('VITE' CHVIT) * ('SAUV') ('SUIT' SOLPRE) ('GDPL') * * ('CHAR' TABLCHAR ) * * ('SEIS' TABLSEIS ) * * ('RECO' TABLRECO ) * * ('MAXI' TABLMAXI ) * * ('EVOL' TABLEVOL ) ; * * OPERANDES: * ---------- * * OPERAT 'MOT' NOM DE L'OPERATEUR DE RESOLUTION DE * L'EQUATION DU MOUVEMENT ("DEVO" OU * "PLEX"). * TEMPCALC 'LISTREEL' INSTANTS DE CALCUL. * BAS1 'BASEMODA' CONTIENT LES MODES DES SOUS-STRUCTURES, LES * SOLUTIONS STATIQUES, LES PSEUDO-MODES * ASSOCIES AUX EFFETS DE TRONCATURE ET * EVENTUELLEMENT LES LIAISONS. * AMORT 'LISTREEL' AMORTISSEMENT. * BLOC 'MOT' DECOUPAGE DU CALCUL EN PLUSIEURS BLOCS DE * PAS DE TEMPS. * NBLOC 'ENTIER' NOMBRE DE BLOCS. * DEPL 'MOT' DONNEE DE DEPLACEMENTS INITIAUX. * CHDEP 'CHPOINT' VALEURS DES DEPLACEMENTS INITIAUX. * VITE 'MOT' DONNEE DE VITESSES INITIALES. * CHVIT 'CHPOINT' VALEURS DES VITESSES INITIALES. * SAUV 'MOT' DEMANDE DE SAUVEGARDE DES RESULTATS DU * DERNIER "BLOC" EN VUE D'UNE REPRISE * ULTERIEURE EVENTUELLE DU CALCUL. * SUIT 'MOT' INDICATION DE REPRISE D'UN CALCUL. * SOLPRE 'SOLUTIO' CONDITIONS INITIALES POUR UNE REPRISE * (= CONDITIONS FINALES DU CALCUL PRECEDENT). * GDPL 'MOT' INDICATION DE CALCUL AVEC GRANDS * DEPLACEMENTS (POUR L'OPERATEUR "PLEXUS" * SEULEMENT). * * CHAR 'MOT' MOT CLE, CREATION D'UN OBJET CHARGEMENT. * TABLCHAR 'TABLE' TABLE CONTENANT AUTANT DE TABLE (N) QUE * CHARGEMENT * I POUVANT VARIER DE 1 A N * TABLCHAR I 'CHARGEMENT' : OBJET CHARGEMENT. * TABLCHAR I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU EST * APPLIQUEE LE CHARGEMENT. * TABLCHAR I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE. * * SEIS 'MOT' MOT CLE, CREATION D'UN OBJET CHARGEMENT. * TABLSEIS 'TABLE' TABLE CONTENANT AU PLUS 3 TABLES * I POUVANT VARIER DE 1 A 3 * TABLSEIS I 'EVOLUTION' : OBJET EVOLUTION CONTENANT * LA DISCRETISATION DU SEISME. * TABLSEIS I 'COEFFICIENT' : OBJET FLOTTANT, COEFF * MULTIPLICATIF APPLIQUE AU SEISME. * TABLSEIS I 'DIRECTION' : OBJET MOT, INDIQUANT LA * DIRECTION DU SEISME (UX, UY, UZ). * * RECO 'MOT' DEMANDE DE RECOMBINAISON MODALE POUR TOUTE * LA STRUCTURE, A DES INSTANTS DONNES. * TABLRECO 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE * RECOMBINAISONS DEMANDEES. * I VARIANT DE 1 A N * TABLRECO I 'TYPE' : UN MOT, TYPE DEMANDE * (DEPL,ACCE, VITE,LIAI,CONT). * TABLRECO I 'TEMPS' : OBJET FLOTTANT, TEMPS OU DOIT * S'EFFECTUER LA RECOMBINAISON POUR TOUTE LA * STRUCTURE. * TABLRECO I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * TABLRECO I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * * MAXI 'MOT' DEMANDE DU MAXIMUM, EN VALEUR ABSOLUE D'UNE * COMPOSANTE AU COURS DU TEMPS APRES UNE * RECOMBINAISON MODALE. * TABLMAXI 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE * MAXIMA DEMANDES. * I VARIANT DE 1 A N * TABLMAXI I 'TYPE' : UN MOT, TYPE DU MAXIMUM * DEMANDE (DEPL,ACCE, VITE,LIAI,CONT). * TABLMAXI I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * TABLMAXI I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * PUIS, * TABLMAXI I 'POINT' : OBJET POINT,MAILLAGE,ATTACHE. * POINTS OU DOIT S'EFFECTUER LA RECHERCHE DU * MAXIMUM. * TABLMAXI I 'COMPOSANTE' : UN MOT, NOM DE LA * COMPOSANTE DU POINT. * OU, * TABLMAXI I 'CHPOINT' : OBJET CHPOINT, CHAMP * CONTENANT LES POINTS ET LES COMPOSANTES OU * DOIT S'EFFECTUER LA RECHERCHE DES MAXIMA. * * EVOL 'MOT' DEMANDE DE RECOMBINAISON MODALE EN QUELQUES * POINTS, EN FONCTION DU TEMPS. * TABLEVOL 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE * DEMANDES DE RECOMBINAISON. * I VARIANT DE 1 A N * TABLEVOL I 'NPAS' : UN ENTIER, SORTIE TOUS LES * "NPAS" DE CALCUL. * (FACULTATIF) EGAL A 1 PAR DEFAUT. * TABLEVOL I 'TYPE' : UN MOT, TYPE DE LA COMPOSANTE * TRAITEE (DEPL,ACCE, VITE,LIAI,CONT). * TABLEVOL I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * TABLEVOL I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * PUIS, * TABLEVOL I 'POINT' : OBJET POINT,MAILLAGE,ATTACHE. * POINTS OU DOIT S'EFFECTUER LA RECOMBINAISON * TABLEVOL I 'COMPOSANTE' : UN MOT, NOM DE LA * COMPOSANTE DU POINT. * OU, * TABLEVOL I 'CHPOINT' : OBJET CHPOINT, CHAMP * CONTENANT LES POINTS ET LES COMPOSANTES OU * DOIT S'EFFECTUER LA RECOMBINAISON. * * * RESULTATS: * ---------- * * RESU 'TABLE' RESULTATS, REPARTIS COMME SUIT: * * INDICE 'SAUV' OBJET SOLUTION. * RESU 'SAUV' : LA SOLUTION A L'INSTANT FINAL DE * L'EQUATION DANS LA BASE MODALE. * INDICE 'RECO' OBJET TABLE, INDICEE 1 A N. * RESU 'RECO' I : LA RECOMBINAISON MODALE (CHPOINT OU * CHAMELEM) POUR LA STRUCTURE A L'INSTANT T . * INDICE 'MAXI' OBJET TABLE, INDICEE 1 A N. * RESU 'MAXI' I : LE MAXIMUM DEMANDE DE LA COMPOSANTE * EN VALEUR ABSOLUE (FLOTANT). * INDICE 'EVOL' OBJET TABLE, INDICEE 1 A N. * RESU 'EVOL' I : LA RECOMBINAISON MODALE (EVOLUTION) * EN QUELQUES POINTS SUR L'INTERVALLE DE * TEMPS DE CALCUL. * * VARIABLES : * ----------- * * LISTEM : LISTREEL DE TEMPS POUR LE CALCUL D'UN BLOC * * * AUTEUR, DATE DE CREATION: * ------------------------- * * P.M. L.V. 17 MARS 1988 * ************************************************************************ * * NBLOCS = 1 ; DEPL_OUI = FAUX ; VITE_OUI = FAUX ; SAUV_OUI = FAUX ; SUIT_OUI = FAUX ; GDPL_OUI = FAUX ; CHAR_OUI = FAUX ; SEIS_OUI = FAUX ; RECO_OUI = FAUX ; MAXI_OUI = FAUX ; EVOL_OUI = FAUX ; _NBINS_ = 1 ; * DEB_ERR = '***** ERREUR *****' ; * * OBJET "BOUCLE" CREE POUR PERMETTRE UNE SORTIE PREMATUREE DE * LA PROCEDURE EN CAS D'ERREUR. REPETER PROC 1 ; * * * -------------------------------------------------------------------- * RECUPERATION DES OPERANDES * -------------------------------------------------------------------- * SI (EXISTE MOT1); TAB_MOT = 'TABLE' ; SI (EXISTE MOT2); SI (EXISTE MOT3); SI (EXISTE MOT4); SI (EXISTE MOT5); SI (EXISTE MOT6); SI (EXISTE MOT7); SI (EXISTE MOT8); SI (EXISTE MOT9); SI (EXISTE MO10); SI (EXISTE MO11); NB_MOT = 11 ; SINON; NB_MOT = 10 ; FINSI ; SINON; NB_MOT = 9 ; FINSI ; SINON; NB_MOT = 8 ; FINSI ; SINON; NB_MOT = 7 ; FINSI ; SINON; NB_MOT = 6 ; FINSI ; SINON; NB_MOT = 5 ; FINSI ; SINON; NB_MOT = 4 ; FINSI ; SINON; NB_MOT = 3 ; FINSI ; SINON; NB_MOT = 2 ; FINSI ; SINON; NB_MOT = 1 ; FINSI ; SINON; NB_MOT = 0 ; FINSI ; * SI (EXISTE TAB1); TAB_TAB = 'TABLE' ; TAB_TAB.1 = TAB1 ; SI (EXISTE TAB2); TAB_TAB.2 = TAB2 ; SI (EXISTE TAB3); TAB_TAB.3 = TAB3 ; SI (EXISTE TAB4); TAB_TAB.4 = TAB4 ; SI (EXISTE TAB5); TAB_TAB.5 = TAB5 ; NB_TAB = 5 ; SINON; NB_TAB = 4 ; FINSI ; SINON; NB_TAB = 3 ; FINSI ; SINON; NB_TAB = 2 ; FINSI ; SINON; NB_TAB = 1 ; FINSI ; SINON; NB_TAB = 0 ; FINSI ; * SI (EXISTE CHP1); TAB_CHP = 'TABLE' ; TAB_CHP.1 = CHP1 ; SI (EXISTE CHP2); TAB_CHP.2 = CHP2 ; NB_CHP = 2 ; SINON; NB_CHP = 1 ; FINSI ; SINON; NB_CHP = 0 ; FINSI ; * * ------------------------------------------------------------------- * VERIFICATION DES OPERANDES * ------------------------------------------------------------------- * I_MOT = 0 ; I_TAB = 0 ; I_CHP = 0 ; * REPETER LECTURE ; * I_MOT = I_MOT '+' 1 ; SI (I_MOT '>' NB_MOT) ; QUITTER LECTURE ; FINSI; * SI (EGA MOT_CLE 'BLOC') ; SI ('NON' (EXISTE ENT1) ) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "ENTIER"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; SI (ENT1 '<' 0) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'VOUS AVEZ DONNE UN NOMBRE DE BLOCS NEGATIF.' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; SI (EGA ENT1 0) ; ENT1 = 1 ; FINSI ; NBLOCS = ENT1 ; I_CHP = I_CHP '+' 1 ; SI (I_CHP '>' NB_CHP) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "CHPOINT"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; CHP_DEP = TAB_CHP.I_CHP ; DEPL_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'VITE') ; I_CHP = I_CHP '+' 1 ; SI (I_CHP '>' NB_CHP) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "CHPOINT"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; CHP_VIT = TAB_CHP.I_CHP ; VITE_OUI = VRAI ; SAUV_OUI = VRAI ; SI ('NON' (EXISTE SOLPRE) ) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "SOLUTION"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; SUIT_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'GDPL') ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'OPTION GDPL INDISPONIBLE' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; GDPL_OUI = VRAI ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_CHA = TAB_TAB.I_TAB ; CHAR_OUI = VRAI ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_SEI = TAB_TAB.I_TAB ; SEIS_OUI = VRAI ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_REC = TAB_TAB.I_TAB ; RECO_OUI = VRAI ; * ZEXISTE = 'TYPE' DYNAMOD3 ; * SI ('NEG' ZEXISTE 'PROCEDUR') ; * 'MESSAGE' DEB_ERR ; * 'MESSAGE' 'LE MOT "DYNAMOD3" SE TROUVE DANS VOTRE FICHIER,' ; * 'MESSAGE' 'CE MOT "DYNAMOD3" EST RESERVE POUR L"APPEL ' ; * 'MESSAGE' 'D"UNE PROCEDURE INTERNE.' ; * 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE' ; * QUITTER PROC ; * FINSI ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_MAX = TAB_TAB.I_TAB ; MAXI_OUI = VRAI ; * ZEXISTE = 'TYPE' DYNAMOD2 ; * SI ('NEG' ZEXISTE 'PROCEDUR') ; * 'MESSAGE' DEB_ERR ; * 'MESSAGE' 'LE MOT "DYNAMOD2" SE TROUVE DANS VOTRE FICHIER,' ; * 'MESSAGE' 'CE MOT "DYNAMOD2" EST RESERVE POUR L"APPEL ' ; * 'MESSAGE' 'D"UNE PROCEDURE INTERNE.' ; * 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE' ; * QUITTER PROC ; * FINSI ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_EVO = TAB_TAB.I_TAB ; EVOL_OUI = VRAI ; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; * FIN LECTURE ; * * -------------------------------------------------------------------- * DEBUT DES CALCULS * -------------------------------------------------------------------- * * * *---- ECRITURE DE LA SYNTAXE POUR L'APPEL DE PLEX OU DEVO ---- * * TXT_OPER = 'TEXTE' '_BRIGID_' '_BMASSE_' '_BASMOD_' '_NBINS_' ; TX2_OPER = 'TEXTE' ' ' ; SI (EXISTE AMORT) ; TXT_OPER = 'TEXTE' TXT_OPER '_BAMORT_' ; FINSI; SI CHAR_OUI ; NB_CHAR = 'DIMENSION' TABL_CHA ; I = 0 ; REPETER BOUC_CHA NB_CHAR ; I = I '+' 1 ; TAB_CHAR = TABL_CHA.I ; _CHARG_ = TAB_CHAR.'CHARGEMENT' ; TXT_CHAR = 'TEXTE' '_BASMOD_' ; SI (EXISTE TAB_CHAR 'STRUCTURE') ; _STRUC_ = TAB_CHAR.'STRUCTURE' ; TXT_CHAR = 'TEXTE' TXT_CHAR '_STRUC_' ; SI (EXISTE TAB_CHAR 'NUMERO') ; _NUME_ = TAB_CHAR.'NUMERO' ; TXT_CHAR = 'TEXTE' TXT_CHAR '_NUME_' ; FINSI ; FINSI ; TXT_CHAR = 'TEXTE' TXT_CHAR '_CHARG_' ; SI (EGA I 1) ; _BCHARG_ = _BCHAR_ ; SINON ; _BCHARG_ = _BCHARG_ 'ET' _BCHAR_ ; FINSI ; FIN BOUC_CHA ; FINSI; SI SEIS_OUI ; NB_SEIS = 'DIMENSION' TABL_SEI ; I = 0 ; REPETER BOUC_SEI NB_SEIS ; I = I '+' 1 ; TAB_SEIS = TABL_SEI.I ; EVOL_I = TAB_SEIS.'EVOLUTION' ; COEF_I = TAB_SEIS.'COEFFICIENT' ; _SCHAR_ = 'SEISME' EVOL_I _BASMOD_ COEF_I DIR_I ; SI (EGA I 1) ; _SCHARG_ = _SCHAR_ ; SINON ; _SCHARG_ = _SCHARG_ 'ET' _SCHAR_ ; FINSI ; FIN BOUC_SEI ; FINSI; SI SEIS_OUI ; SI CHAR_OUI ; _BCHARG_ = _SCHARG_ 'ET' _BCHARG_ ; SINON ; _BCHARG_ = _SCHARG_ ; FINSI ; TXT_OPER = 'TEXTE' TXT_OPER '_BCHARG_' ; SINON ; SI CHAR_OUI ; TXT_OPER = 'TEXTE' TXT_OPER '_BCHARG_' ; FINSI ; FINSI ; SI DEPL_OUI ; MACHDE = RMASSE '*' CHP_DEP ; TX2_OPER = 'TEXTE' TX2_OPER '_DEPL_' '_CHPDEP_' ; FINSI; SI VITE_OUI ; MACHVI = RMASSE '*' CHP_VIT ; TX2_OPER = 'TEXTE' TX2_OPER '_VITE_' '_CHPVIT_' ; FINSI; SI GDPL_OUI ; TXT_OPER = 'TEXTE' TXT_OPER '_GDPL_' ; FINSI; SI ( (EGA _OPERAT_ 'DEVO') 'OU' (EGA _OPERAT_ 'PLEX') ) ; TXT_OPER = 'TEXTE' '_OPERAT_' TXT_OPER ; SINON ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'NOM INCORRECT POUR L"OPERATEUR DE RESOLUTION DYNAMIQUE'; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI ; * * * ---------- INITIALISATION POUR L'OPERATEUR RECO ---------- * SI RECO_OUI ; DIM_SORT = 'DIMENSION' TABL_REC ; RECOMBIN = 'TABLE' ; FINSI ; * * ------------------ CALCUL PAR BLOC --------------------- * DIM_CALC = 'DIMENSION' TEMPCALC ; DIM_CAL2 = DIM_CALC '-' 1 ; N1_TEMPS = (DIM_CAL2 '/' NBLOCS) ; N1_TEMP1 = N1_TEMPS '+' 1 ; N2_TEMPS = N1_TEMPS '*' NBLOCS ; N3_TEMPS = DIM_CAL2 '-' N2_TEMPS ; IBLOC = 0 ; I_REC2 = 0 ; ITEMP = 1 ; * REPETER CALCUL NBLOCS ; * IBLOC = IBLOC '+' 1 ; SI ( EGA NBLOCS 1 ) ; LISTEM = TEMPCALC ; DIM_LIST = DIM_CALC ; SINON ; ITEMP = ITEMP '-' 1 ; SI ( IBLOC '<EG' N3_TEMPS ) ; DIM_LIST = N1_TEMP1 '+' 1 ; SINON ; DIM_LIST = N1_TEMP1 ; FINSI ; DIM_LIS2 = 0 ; REPETER LLREEL01 DIM_LIST ; ITEMP = ITEMP '+' 1 ; DIM_LIS2 = DIM_LIS2 '+' 1 ; 'REMPLACER' LISTEM DIM_LIS2 TEMPS ; FIN LLREEL01 ; FINSI ; * SI ( EGA IBLOC 1 ) ; SI SUIT_OUI ; SINON ; SOLUDY = LISTEM TXT_OPER TX2_OPER ; FINSI ; SINON ; 'DETR' SOLPRE ; FINSI ; * * ----- OPERATEUR RECO ----- * SI RECO_OUI ; I_RECO = 0 ; REPETER OPE_RECO DIM_SORT ; I_RECO = I_RECO '+' 1 ; TABL_RE1 = TABL_REC.I_RECO ; TEM_RCO = TABL_RE1.'TEMPS' ; SI ((TEM_RCO '>EG' N4_TEMPS) 'ET' (TEM_RCO '<EG' N5_TEMPS)) ; SI ( EGA _OPERAT_ 'DEVO' ) ; SI ( (EGA TYP_RCO 'VITE') 'OU' (EGA TYP_RCO 'ACCE') ) ; FINSI ; FINSI ; I_REC2 = I_REC2 '+' 1 ; TXT_RECO = 'TEXTE' ' ' ; SI (EXISTE TABL_RE1 'STRUCTURE') ; _RSTRUC_ = TABL_RE1.'STRUCTURE' ; TXT_RECO = 'TEXTE' TXT_RECO '_RSTRUC_' ; SI (EXISTE TABL_RE1 'NUMERO') ; _RNUME_ = TABL_RE1.'NUMERO' ; TXT_RECO = 'TEXTE' TXT_RECO '_RNUME_' ; FINSI ; FINSI ; FINSI ; FIN OPE_RECO ; FINSI ; * * ----- OPERATEUR MAXI ----- * SI MAXI_OUI ; SI ( EGA IBLOC 1 ) ; SINON ; NB_MAXI = 'DIMENSION' TAB_MAX2 ; I_MAX = 0 ; REPETER VAL_MAXI NB_MAXI ; I_MAX = I_MAX '+' 1 ; MAXI1 = TAB_MAX1.I_MAX ; MAXI2 = TAB_MAX2.I_MAX ; SI ( MAXI2 '>' MAXI1 ) ; TAB_MAX1.I_MAX = MAXI2 ; FINSI ; FIN VAL_MAXI ; FINSI ; FINSI ; * * ----- OPERATEUR EVOL ----- * SI EVOL_OUI ; SI ( EGA IBLOC 1 ) ; TAB_EVO1 = RESUEVO1.'EVOLUTION' ; SINON ; RESUEVO2 = DYNAMOD2 SOLUDY _BASMOD_ LISTEM TEMPCALC TABL_EVO TABL_PAS ; TAB_EVO2 = RESUEVO2.'EVOLUTION' ; NB_EVOL = 'DIMENSION' TAB_EVO2 ; I_EVO = 0 ; REPETER OPE_CONC NB_EVOL ; I_EVO = I_EVO '+' 1 ; EVOL1 = TAB_EVO1.I_EVO ; EVOL2 = TAB_EVO2.I_EVO ; EVOL3 = 'CONCAT' EVOL1 EVOL2 ; TAB_EVO1.I_EVO = EVOL3 ; FIN OPE_CONC ; FINSI ; FINSI ; * SI ( 'NEG' DIM_LIST DIM_CALC ) ; 'DETR' LISTEM ; FINSI ; * SOLPRE = SOLUDY ; * FIN CALCUL ; * * * -------------------------------------------------------------------- * RECUPERATION DES RESULTATS * -------------------------------------------------------------------- * SI MAXI_OUI ; FINSI ; SI EVOL_OUI ; FINSI ; SI SAUV_OUI ; SINON ; 'DETR' SOLUDY ; FINSI ; * FIN PROC ; *
© Cast3M 2003 - Tous droits réservés.
Mentions légales