Télécharger finpro.eso

Retour à la liste

Numérotation des lignes :

finpro
  1. C FINPRO SOURCE PV090527 24/01/09 21:15:10 11817
  2. SUBROUTINE FINPRO
  3.  
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6.  
  7.  
  8. -INC PPARAM
  9. -INC CCOPTIO
  10. -INC SMBLOC
  11. -INC CCNOYAU
  12. -INC CCASSIS
  13. -INC SMTABLE
  14. -INC CCPERF
  15.  
  16. INTEGER ITTIME(4)
  17. CHARACTER*(8) MMM
  18. CHARACTER*(LONOM) NOM1,NOMPRC,NOMPRS,VID24
  19. CHARACTER*(512) PPP
  20. LOGICAL BBV
  21.  
  22. IARGUM=MARGUM
  23. IF(IARGUM.EQ.0) THEN
  24. MOTERR=' '
  25. CALL ERREUR(154)
  26. RETURN
  27. ENDIF
  28. call ooohor(0)
  29. IRETOB=MOBJCO
  30. CALL RESPRO
  31. SEGACT IARGUM*MOD
  32. * MSAPI3=MSAPII
  33. * SEGACT MSAPI3
  34. * DO 5 J=1,MSAPIJ(/1)
  35. * INOOB1(MDEOBJ-1+J)=MSAPIJ(J)
  36. ** INOOB2(MDEOBJ-1+J)=MSAPIL(J)
  37. * IF(MSAPIL(J).NE.'FLOTTANT'.OR.MSAPIJ(J).NE.1)
  38. * $ IOUEP2(MDEOBJ-1+J)=MSAPIN(J)
  39. * 5 CONTINUE
  40. * SEGSUP MSAPI3
  41.  
  42. C DEBUT Duree passee dans les procedures (Voir PROCED pour le depart)
  43. call timespv(ittime,oothrd)
  44. IELAPS=ITTIME(1) + ITTIME(2)
  45. ICPU =ITTIME(3) + ITTIME(4)
  46.  
  47. ITPSBL=ITPSPR
  48. SEGACT,ITPSBL*MOD
  49.  
  50. C Niveau, position dans le tableau et nom de la procedure courante
  51. NICOU = ITPSBL.NIVCOU
  52. II = ITPSBL.IPRONI(NICOU)
  53. NOMPRC = ITPSBL.CDPROC(II)
  54.  
  55. C Incremente la duree de la procedure quittee
  56. ITPSBL.DURPRO(1,II)=ITPSBL.DURPRO(1,II) +
  57. & (IELAPS - ITPSBL.TPSPRO(1,II))
  58. ITPSBL.DURPRO(2,II)=ITPSBL.DURPRO(2,II) +
  59. & (ICPU - ITPSBL.TPSPRO(2,II))
  60.  
  61. C Remise a zero du CHRONOMETRE de la procedure parent
  62. NICOU = NICOU - 1
  63. ITPSBL.NIVCOU = NICOU
  64. IF(NICOU .GT. 0)THEN
  65. II=ITPSBL.IPRONI(NICOU)
  66. ITPSBL.TPSPRO(1,II) = IELAPS
  67. ITPSBL.TPSPRO(2,II) = ICPU
  68. ENDIF
  69. C FIN Duree passee dans les procedures
  70.  
  71. C
  72. C CHANGEMENT DE BLOC, RETOUR AU PRECEDENTE
  73. C
  74. C Gestion du SOUCI dans le BLOC (COMMENTE ACTUELLEMENT)
  75. C mbsou=mbsouc
  76.  
  77. MTXBLC=MTXBL
  78. IF(MTXBL.NE.0) SEGDES,MTXBLC
  79. MBIR =MBERR
  80. ISSPOT=ISPOTE
  81. SEGSUP ISSPOT
  82. lmnanc=lmnnom
  83. lmnnom=mdeobj-1
  84.  
  85. * OPTI 'LOCA' = VRAI (partie 1)
  86. * =========================
  87. IF (ZLOPRO) THEN
  88. * on sauvegarde dans une table les objets de la partie de la pile
  89. * globale qui est dediee a la procedure courante
  90. M = LMNANC - LMNNOM
  91. SEGINI MTAB1
  92. MTAB1.MLOTAB=M
  93. NOBJ=0
  94. IF(NBESC.NE.0) SEGACT IPILOC
  95. DO 20 I=LMNNOM+1,LMNANC
  96. IP=INOOB1(I)
  97. IDEBCH=IPCHAR(IP)
  98. IFINCH=IPCHAR(IP+1)-1
  99. NOM1=ICHARA(IDEBCH:IFINCH)
  100. * on va quand meme eliminer certains des objets dont le nom,
  101. * le type et/ou la valeur ne nous plaisent pas...
  102. IF (NOM1 .EQ.' ' ) GOTO 21
  103. IF (NOM1(1:1).EQ.'#' ) GOTO 21
  104. IF (NOM1 .EQ.'FINP' ) GOTO 21
  105. IF (INOOB2(I).EQ.'PROCEDUR') GOTO 21
  106. GOTO 22
  107. 21 CONTINUE
  108. INOOB1(I)=0
  109. INOOB2(I)=' '
  110. IOUEP2(I)=0
  111. GOTO 20
  112. 22 CONTINUE
  113. NOBJ=NOBJ+1
  114. MTAB1.MTABTI(NOBJ) ='MOT '
  115. MTAB1.MTABII(NOBJ) = INOOB1(I)
  116. MTAB1.MTABTV(NOBJ) = INOOB2(I)
  117. IF (INOOB2(I).EQ.'FLOTTANT') THEN
  118. MTAB1.RMTABV(NOBJ)=XIFLOT(IOUEP2(I))
  119. ELSE
  120. MTAB1.MTABIV(NOBJ)=IOUEP2(I)
  121. ENDIF
  122. 20 CONTINUE
  123. IF (NBESC.NE.0) SEGDES,IPILOC
  124.  
  125. M=NOBJ
  126. MTAB1.MLOTAB = M
  127. SEGADJ,MTAB1
  128.  
  129. * OPTI 'LOCA' = FAUX
  130. * ==================
  131. ELSE
  132.  
  133. * on efface la partie de la pile qui etait affectée à la procedure
  134. DO IAZ=LMNNOM+1,LMNANC
  135. INOOB1(IAZ)=0
  136. INOOB2(IAZ)=' '
  137. IOUEP2(IAZ)=0
  138. ENDDO
  139. ENDIF
  140.  
  141.  
  142. * ON RECHARGE LE BLOC PARENT
  143. * write(6,*) ' finpro lmnnom' , lmnnom
  144. MBLO1 =MBLSUP
  145. SEGSUP,MBLOC
  146.  
  147. MBLOC=MBLO1
  148. SEGACT MBLOC*MOD
  149.  
  150. C Gestion du SOUCI dans le BLOC (COMMENTE ACTUELLEMENT)
  151. C mbsouc=max(mbsou,mbsouc)
  152.  
  153. ISSPOT=ISPOTE
  154. SEGACT ISSPOT*MOD
  155. MBERR=MBIR
  156. MTXBLC=MTXBL
  157. IF(MTXBL.NE.0) SEGACT MTXBLC
  158. CALL PROCRE
  159.  
  160.  
  161. * OPTI 'LOCA' = VRAI (partie 2)
  162. * ==================
  163. IF (ZLOPRO) THEN
  164. NOM1(1:1)='&'
  165. NOM1(2:LONOM)=NOMPRC(1:LONOM-1)
  166. CALL NOMOBJ('TABLE ',NOM1,MTAB1)
  167. ENDIF
  168.  
  169. C
  170. C ECRITURE DES RESULTAS DANS LA PILE DES OBJETS LUS
  171. C
  172. MTRESU=ITRESU
  173. IF(MTRESU.NE.0) THEN
  174. IF (NBESC.NE.0) SEGACT,IPILOC
  175. SEGACT,MTRESU
  176. IF(IIMPI.EQ.1754) WRITE(IOIMP,*)' DANS FINPRO NRESI ',NRESI
  177. IF(NRESI.NE.0.AND.MBIR.EQ.0) THEN
  178. DO 2 ILERT=1,NRESI
  179. I = NRESI - ILERT + 1
  180. MMM=MTYRES(I)
  181. IIP=IVARES(I)
  182. IF(MMM.EQ.'ENTIER ') THEN
  183. IIV=IIP
  184. CALL ECRENT(IIV)
  185. ELSEIF(MMM.EQ.'FLOTTANT')THEN
  186. XXA=XFLRES(I)
  187. CALL ECRREE(XXA)
  188. ELSEIF(MMM.EQ.'MOT ') THEN
  189. IIC=IPCHAR(IIP)
  190. IID=IPCHAR(IIP+1)
  191. PPP=' '
  192. PPP(1:IID-IIC)=ICHARA(IIC:IID-1)
  193. CALL ECRCHA(PPP(1:IID-IIC))
  194. IF (NBESC.NE.0) SEGACT,IPILOC
  195. ELSEIF(MMM.EQ.'LOGIQUE ') THEN
  196. BBV=IPLOGI(IIP)
  197. CALL ECRLOG(BBV)
  198. ELSEIF(MMM.EQ.'METHODOL') THEN
  199. * write(6,*) ' finpro iretob',iretob
  200. CALL ECROBJ('OBJET ',IRETOB)
  201. ELSE
  202. CALL ECROBJ(MMM,IIP)
  203. ENDIF
  204. 2 CONTINUE
  205.  
  206. IF (NBESC.NE.0) SEGDES,IPILOC
  207. SEGSUP MTRESU
  208. ENDIF
  209.  
  210. ENDIF
  211. ITRESU=0
  212. SEGDES,IARGUM
  213. LECTAB=1
  214. * write(6,*)'sortie de finpro lmnnom mbloc ' ,lmnnom, mbloc
  215. * write(6,*)'nbnom mbcour ipvir intemp',nbnom,mbcour,ipvir,intemp
  216.  
  217. END
  218.  
  219.  
  220.  
  221.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales