Télécharger nouins.eso

Retour à la liste

Numérotation des lignes :

nouins
  1. C NOUINS SOURCE PV090527 24/01/09 21:15:20 11817
  2. C SERT A DONNER LES NOMS INDIQUES AUX OBJETS SE TROUVANT DANS LA PILE
  3. C
  4. SUBROUTINE NOUINS
  5.  
  6. IMPLICIT INTEGER(I-N)
  7.  
  8. -INC PPARAM
  9. -INC CCNOYAU
  10. -INC CCOPTIO
  11. -INC SMBLOC
  12. -INC SMLMOTS
  13. -INC SMLENTI
  14. -INC CCASSIS
  15. C
  16. CHARACTER*(8) ITBNO,ITCH
  17. CHARACTER*(32) ITCH2
  18. CHARACTER*(LONOM) CNOM
  19. LOGICAL LLLERR , LOPREM , LOERAS, BOOL1
  20. REAL*8 XVAL
  21.  
  22.  
  23. C On positionne JERR au MAXI entre l'erreur par ASSISTANT et l'erreur GLOBALE
  24. jerr=MAX(IERR,IERGLB)
  25.  
  26. IF (INTEMP.EQ.0)GO TO 10
  27. IF(jerr.GT.1) GO TO 20
  28. C ON AFFECTE UN OBJET TEMPORAIRE EVENTUEL
  29. IRETTP=0
  30. CALL QUETYP(ITCH,0,IRETTP)
  31. IF(IRETTP.EQ.0) THEN
  32. ITBNOM=ITANO1(1)
  33. INOOB2(ITBNOM)=' '
  34. IOUEP2(ITBNOM)=0
  35. GO TO 20
  36. ENDIF
  37. CALL LIROBJ(ITCH,IRET,1,IRETTP)
  38. IF (IRETTP.EQ.0) THEN
  39. CALL ERREUR(5)
  40. ENDIF
  41. ITBNOM=ITANO1(1)
  42. INOOB2(ITBNOM)=JTYOBJ(IMOTLU)
  43. IOUEP2(ITBNOM)=JPOOB4(IMOTLU)
  44. ISSPOT=ISPOTE
  45. IIPOTE=IIPOTE+1
  46. IF ( IIPOTE.GT. IPOTEM(/1)) THEN
  47. C write (6,*)'**************************************'
  48. C write (6,*) 'necessite dagrandir iipote ' , iipote
  49. C write (6,*)'**************************************'
  50. NVQTEM=IPOTEM(/1)+20
  51. SEGADJ ISSPOT
  52. ENDIF
  53. IPOTEM(IIPOTE) = ITBNOM
  54. GOTO 100
  55. 10 CONTINUE
  56. C ON PREND LES NOMS LES UNS APRES LES AUTRES
  57. INOM=0
  58.  
  59. 11 CONTINUE
  60. INOM=INOM+1
  61. IF (INOM.GT.NBNOM) GOTO 100
  62. if(nbesc.ne.0) segact ipiloc
  63. IRET=0
  64. ITBNOM=ITANO1(INOM)
  65. ITCHA=INOOB1(ITBNOM)
  66. IDEBCH=IPCHAR(ITCHA)
  67. IFINCH=IPCHAR(ITCHA+1)-1
  68. MOTERR(1:8)=ICHARA(IDEBCH:IFINCH)
  69. CALL MESLIR(-183)
  70. ITCH=ITANOM(INOM)
  71. if(nbesc.ne.0)SEGDES,IPILOC
  72. call lirabj('PROCEDUR',iret,0,iretou)
  73. if(Iretou.ne.0) then
  74. itch='PROCEDUR'
  75. else
  76. CALL LIRABJ(ITCH,IRET,1,IRETOU)
  77. endif
  78. C write(6,*) ' itch iret ' , itch , iret
  79. IF (INOM.NE.NBNOM) THEN
  80. IF (INOOB2(ITBNOM).EQ.'TABLE '.OR.INOOB2(ITBNOM).EQ.
  81. $ 'METHODOL' ) THEN
  82. IF(INOOB2(ITBNOM).EQ.'METHODOL') ISUCC=1
  83. C VEUT-ON REMPLIR UN ELEMENT D'UNE TABLE?
  84.  
  85. CALL NTATAB ( INOM,ITCH,IRET,ISUCC)
  86. if(nbesc.ne.0) segact ipiloc
  87. IF(ISUCC.EQ.1)GOTO 11
  88. ENDIF
  89. ENDIF
  90. 12 CONTINUE
  91. if(nbesc.ne.0) segact ipiloc
  92. IF (ITBNOM.LE.0) CALL ERREUR(315)
  93. IDEBCH=IPCHAR(ITCHA)
  94. IFINCH=IPCHAR(ITCHA+1)-1
  95. ITCH=ICHARA(IDEBCH:IFINCH)
  96. if(nbesc.ne.0)SEGDES,IPILOC
  97. IF (jerr.LE.1) THEN
  98. IF( ITCH .EQ.' ') THEN
  99. CALL ERREUR(315)
  100. GO TO 20
  101. ENDIF
  102. IF( ITCH .EQ.'.') THEN
  103. CALL ERREUR(315)
  104. GO TO 20
  105. ENDIF
  106. IF(ITCH(1:1).EQ.'#') THEN
  107. CALL ERREUR(315)
  108. GO TO 20
  109. ENDIF
  110. INOOB2(ITBNOM)=JTYOBJ(IMOTLU)
  111. IOUEP2(ITBNOM)=JPOOB4(IMOTLU)
  112. ELSE
  113. IF(ITCH .NE.'.'.AND.ITCH.NE.
  114. $ ' ') INOOB2(ITBNOM)='ANNULE '
  115. ENDIF
  116. GOTO 11
  117. 100 CONTINUE
  118.  
  119. C VERIFIER QU'IL N'Y A PAS D'OBJET DANS LA PILE
  120. IF(jerr.NE.0) GOTO 20
  121. CALL QUETYP(ITCH,0,IRETOU)
  122. IF (IRETOU.EQ.0) GOTO 20
  123. MOTERR(1:8)=ITCH
  124. IF (ITCH .EQ. 'MOT ') THEN
  125. CALL LIRCHA(ITCH,1,IRETOU)
  126. ITCH2=ITCH
  127. CALL QUENOM(CNOM)
  128. IF (CNOM.EQ.' ') THEN
  129. CNOM=ITCH2
  130. ENDIF
  131. ELSEIF (ITCH .EQ. 'ENTIER ') THEN
  132. CALL LIRENT(IVAL,1,IRETOU)
  133. WRITE(ITCH2, '(i32)') IVAL
  134. CALL QUENOM(CNOM)
  135. IF (CNOM.EQ.' ') THEN
  136. CNOM=ITCH2
  137. ENDIF
  138. ELSEIF (ITCH .EQ. 'FLOTTANT') THEN
  139. CALL LIRREE(XVAL,1,IRETOU)
  140. WRITE(ITCH2, '(F32.2)') XVAL
  141. CALL QUENOM(CNOM)
  142. IF (CNOM.EQ.' ') THEN
  143. CNOM=ITCH2
  144. ENDIF
  145. ELSEIF (ITCH .EQ. 'LOGIQUE ') THEN
  146. CALL LIRLOG(BOOL1,1,IRETOU)
  147. IF (BOOL1) THEN
  148. ITCH2='VRAI '
  149. ELSE
  150. ITCH2='FAUX '
  151. ENDIF
  152. CALL QUENOM(CNOM)
  153. IF (CNOM.EQ.' ') THEN
  154. CNOM=ITCH2
  155. ENDIF
  156. ELSE
  157. CALL LIRABJ(ITCH,IRET,1,IRETOU)
  158. CALL QUENOM(CNOM)
  159. ENDIF
  160. MOTERR(9:8+LONOM)=CNOM
  161. CALL ERREUR(11)
  162.  
  163. 20 CONTINUE
  164. C IF( jerr.NE.0 .AND. MBFONC.EQ.0) THEN
  165. IF( jerr.NE.0 .AND. IERPER.LE.2) THEN
  166. IF(MBFONC.EQ.0) THEN
  167. CALL TRBACK
  168. ELSE
  169. CALL ANABAC
  170. ENDIF
  171. ENDIF
  172. NOMLU=0
  173. IF ( IRAZ .LE. -1 .OR. jerr.NE.0) THEN
  174. IPTEM=-(IRAZ + 1)
  175. if(jerr.ne.0) iptem=0
  176. CALL RAZPIL
  177. ENDIF
  178. LECTAB=0
  179. C RETASSER LA PILE DES REELS (TOUTES LES 30 FOIS)
  180. C ICTAS=ICTAS+1
  181. C IF (ICTAS.GT.10) THEN
  182. CALL TASREE
  183. C ICTAS=0
  184. C ENDIF
  185. C y a t -il une erreur sur les assistants ?
  186. if (LODEFE) then
  187. merres = ierres
  188. segact merres
  189. LLLERR = LOSIER
  190. segdes merres
  191. if ( LLLERR ) THEN
  192. C il faut que les assistants vident les listes d'instructions
  193. JG = nbesc
  194. SEGINI MLENTI
  195. DO i = 1 , nbesc
  196. LECT(i) = 1
  197. END DO
  198. LOPREM = .TRUE.
  199. 9876 continue
  200. NBINSS = 0
  201. DO i = 1 , nbesc
  202. if ( LECT(I) .EQ. 1 ) then
  203. MESINS = MESCL(I)
  204. if ( LOPREM ) then
  205. SEGACT MESINS*MOD
  206. else
  207. SEGACT MESINS*(MOD,ECR=1)
  208. end if
  209. if ( NBINS .EQ. 0 .AND. INSCOU .EQ. 0 ) THEN
  210. LECT(I) = 0
  211. else
  212. NBINSS = NBINSS + 1
  213. end if
  214. SEGDES MESINS*RECORD
  215. end if
  216. END DO
  217. LOPREM = .FALSE.
  218. IF ( NBINSS .NE. 0 ) GOTO 9876
  219. SEGSUP MLENTI
  220. C les assistants ont vide leur pile d'instructions
  221. segact merres*mod
  222. do jerr = 1, NBERR
  223. if(liserr(1,jerr).ne.0) then
  224. write(ioimp,*) ' ------------------------------'
  225. write(ioimp,*) ' assistant :',liserr(3,jerr)
  226. write(ioimp,*) ' erreur :',liserr(1,jerr)
  227. MLMOTS = liserr(2,jerr)
  228. call ooove1(mlmots,iret)
  229. if(iret.eq.2) then
  230. segact MLMOTS
  231. write(ioimp,*) MOTS(1) (1:MOTS(/1))
  232. write(ioimp,*) MOTS(2) (1:MOTS(/1))
  233. segdes MLMOTS
  234. write(ioimp,*) ' ------------------------------'
  235. endif
  236. endif
  237. end do
  238. NBERR = 0
  239. LOSIER = .FALSE.
  240. segdes merres
  241. IERR =0
  242. IERGLB=0
  243. CALL ERREUR (915)
  244. RETURN
  245. end if
  246. if (LOTRMA) then
  247. mesins = mescl(0)
  248. segact mesins*mod
  249. call nouins2
  250. end if
  251. end if
  252. ierglb=ierr
  253. RETURN
  254. END
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  

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