Télécharger ooobph.eso

Retour à la liste

Numérotation des lignes :

ooobph
  1. C OOOBPH SOURCE PV090527 26/04/24 08:23:01 12524
  2. CMODE 92/04/03 13:28:36 ESOPV10
  3. SUBROUTINE OOOBPH (HNOMV,PSEG,PARCH,HNOMVA,IDIM,NDIM,
  4. * NBMAX)
  5. C---------------------------------------------------------------------
  6. C DESARCHIVAGE DE SEGMENTS
  7. C HNOMV : NOM DU TABLEAU OU DE LA VARIABLE SIMPLE
  8. C PSEG : SEGMENT ORIGINE
  9. C PARCH : SEGMENT ARCHIVE
  10. C HNOMVA : TABLEAU TRANSMIS
  11. C IDIM(NDIM) : DIMENSIONS DU TABLEAU
  12. C NDIM : NOMBRE DE DIMENSIONS D'UN TABLEAU
  13. C NBMAX : NOMBRE MAX DE VALEURS A ARCHIVER
  14. C
  15. C LONGUEURS:
  16. C =========
  17. C LOGIQUE: 5
  18. C INTEGER: 11 INTEGER*2 : 6 INTEGER*1 : 4
  19. C REAL*4 : 16 REAL*8 : 25 REAL*16 : 42
  20. C COMPLEX*8 : 35 COMPLEX*16: 53 COMPLEX*32 : 87
  21. C
  22. C H_MULLEMAN LE 18/8/1991
  23. C-----------------------------------------------------------------------
  24. %INC IOOARC
  25. %INC IOOCH
  26. %INC IOOCH2
  27. LOGICAL VRAI
  28. C
  29. C-----------------------------------------------------------------------
  30. C
  31. KAS=CHARACTER
  32. GO TO 20
  33. ENTRY OOOBPL (HNOMV,PSEG,PARCH,LNOMVA,IDIM,NDIM,NBMAX)
  34. KAS=LOGICAL
  35. GO TO 20
  36. ENTRY OOOBPM (HNOMV,PSEG,PARCH,MNOMVA,IDIM,NDIM,NBMAX)
  37. KAS=LOGICAL_2
  38. GO TO 20
  39. ENTRY OOOBPN (HNOMV,PSEG,PARCH,NNOMVA,IDIM,NDIM,NBMAX)
  40. KAS=LOGICAL_1
  41. GO TO 20
  42. ENTRY OOOBPI (HNOMV,PSEG,PARCH,INOMVA,IDIM,NDIM,NBMAX)
  43. KAS=INTEGER
  44. GO TO 20
  45. ENTRY OOOBPJ (HNOMV,PSEG,PARCH,JNOMVA,IDIM,NDIM,NBMAX)
  46. KAS=INTEGER_2
  47. GO TO 20
  48. ENTRY OOOBPK (HNOMV,PSEG,PARCH,KNOMVA,IDIM,NDIM,NBMAX)
  49. KAS=INTEGER_1
  50. GO TO 20
  51. ENTRY OOOBPR (HNOMV,PSEG,PARCH,RNOMVA,IDIM,NDIM,NBMAX)
  52. KAS=REAL_4
  53. GO TO 20
  54. ENTRY OOOBPD (HNOMV,PSEG,PARCH,DNOMVA,IDIM,NDIM,NBMAX)
  55. KAS=REAL_8
  56. GO TO 20
  57. ENTRY OOOBPQ (HNOMV,PSEG,PARCH,QNOMVA,IDIM,NDIM,NBMAX)
  58. KAS=REAL_16
  59. GO TO 20
  60. ENTRY OOOBPC (HNOMV,PSEG,PARCH,CNOMVA,IDIM,NDIM,NBMAX)
  61. KAS=COMPLEX
  62. GO TO 20
  63. ENTRY OOOBPY (HNOMV,PSEG,PARCH,YNOMVA,IDIM,NDIM,NNMAX)
  64. KAS=COMPLEX_16
  65. GO TO 20
  66. ENTRY OOOBPZ (HNOMV,PSEG,PARCH,ZNOMVA,IDIM,NDIM,NBMAX)
  67. KAS=COMPLEX_32
  68. GO TO 20
  69. ENTRY OOOBPP (HNOMV,PSEG,PARCH,INOMVA,IDIM,NDIM,NBMAX)
  70. KAS=POINTEUR
  71. C
  72. 20 CONTINUE
  73. C
  74. C
  75. NMAX=1
  76. IF(NDIM.EQ.0) THEN
  77. ELSE
  78. C
  79. CASE , KAS
  80. WHEN , CHARACTER
  81. IF (NDIM.EQ.1) THEN
  82. ELSE
  83. DO I=2,NDIM
  84. NMAX=NMAX*IDIM(I)
  85. ENDDO
  86. ENDIF
  87. C
  88. WHENOTHERS
  89. DO I=1,NDIM
  90. NMAX=NMAX*IDIM(I)
  91. ENDDO
  92. ENDCASE
  93. ENDIF
  94. C
  95. IF (NMAX.GE.NBMAX) NMAX=NBMAX
  96. DO I=1,NMAX
  97. CASE ,KAS
  98. WHEN , LOGICAL , LOGICAL_2 , LOGICAL_1
  99. CH5=PARCH.CHARIV(INDICE:INDICE)
  100. INDICE=INDICE+1
  101. IF (CH5(1:1).EQ.'T') THEN
  102. VRAI=.TRUE.
  103. ELSE
  104. VRAI=.FALSE.
  105. ENDIF
  106. CASE , KAS
  107. WHEN , LOGICAL
  108. IF(VRAI) THEN
  109. LNOMVA(I)=.TRUE.
  110. ELSE
  111. LNOMVA(I)=.FALSE.
  112. ENDIF
  113. WHEN , LOGICAL_2
  114. IF(VRAI) THEN
  115. MNOMVA(I)=.TRUE.
  116. ELSE
  117. MNOMVA(I)=.FALSE.
  118. ENDIF
  119. WHEN , LOGICAL_1
  120. IF(VRAI) THEN
  121. NNOMVA(I)=.TRUE.
  122. ELSE
  123. NNOMVA(I)=.FALSE.
  124. ENDIF
  125. ENDCASE
  126. C
  127. WHEN , INTEGER , POINTEUR
  128. CH11=PARCH.CHARIV(INDICE:INDICE+11)
  129. C INOMVA(I)=IVAL(CH11,11)
  130. READ(CH11,FMT='(I11)') INOMVA(I)
  131. INDICE=INDICE+11
  132. C
  133. WHEN , INTEGER_2
  134. CH6=PARCH.CHARIV(INDICE:INDICE+6)
  135. C JNOMVA(I)=IVAL(CH6,6)
  136. READ(CH6,FMT='(I6)') JNOMVA(I)
  137. INDICE=INDICE+6
  138. C
  139. WHEN , INTEGER_1
  140. CH6=PARCH.CHARIV(INDICE:INDICE+6)
  141. C KNOMVA(I)=IVAL(CH6,6)
  142. READ(CH6,FMT='(I6)') KNOMVA(I)
  143. INDICE=INDICE+6
  144. C
  145. WHEN , REAL_4
  146. CH16=PARCH.CHARIV(INDICE:INDICE+16)
  147. C RNOMVA(I)=VAL(CH16,16)
  148. READ(CH16,FMT='(E16.9)') RNOMVA(I)
  149. INDICE=INDICE+16
  150. C
  151. WHEN , REAL_8
  152. CH25=PARCH.CHARIV(INDICE:INDICE+25)
  153. C DNOMVA(I)=VAL(CH25,25)
  154. READ(CH25,FMT='(E25.18)') DNOMVA(I)
  155. INDICE=INDICE+25
  156. C
  157. WHEN , REAL_16
  158. CH42=PARCH.CHARIV(INDICE:INDICE+42)
  159. C QNOMVA(I)=VAL(CH42,42)
  160. READ(CH42,FMT='(E42.35)') QNOMVA(I)
  161. INDICE=INDICE+42
  162. C
  163. WHEN , COMPLEX
  164. CH16=PARCH.CHARIV(INDICE:INDICE+16)
  165. C CNOMVA(1,I)=VAL(CH16,16)
  166. READ(CH16,FMT='(E16.9)') CNOMVA(1,I)
  167. INDICE=INDICE+16
  168. CH16=PARCH.CHARIV(INDICE:INDICE+16)
  169. C CNOMVA(2,I)=VAL(CH16,16)
  170. READ(CH16,FMT='(E16.9)') CNOMVA(2,I)
  171. INDICE=INDICE+16
  172. WHEN , COMPLEX_16
  173. CH25=PARCH.CHARIV(INDICE:INDICE+25)
  174. C YNOMVA(1,I)=VAL(CH25,25)
  175. READ(CH25,FMT='(E25.18)') YNOMVA(1,I)
  176. INDICE=INDICE+25
  177. CH25=PARCH.CHARIV(INDICE:INDICE+25)
  178. C YNOMVA(2,I)=VAL(CH25,25)
  179. READ(CH25,FMT='(E25.18)') YNOMVA(2,I)
  180. INDICE=INDICE+25
  181. WHEN , COMPLEX_32
  182. CH42=PARCH.CHARIV(INDICE:INDICE+42)
  183. C ZNOMVA(1,I)=VAL(CH42,42)
  184. READ(CH42,FMT='(E42.35)') ZNOMVA(1,I)
  185. INDICE=INDICE+42
  186. CH42=PARCH.CHARIV(INDICE:INDICE+42)
  187. C ZNOMVA(2,I)=VAL(CH42,42)
  188. READ(CH42,FMT='(E42.35)') ZNOMVA(2,I)
  189. INDICE=INDICE+42
  190. WHEN , CHARACTER
  191. LONG=LEN(HNOMVA(I))
  192. HNOMVA(I)(1:LONG)= PARCH.CHARIV(INDICE:INDICE+LONG-1)
  193. INDICE=INDICE+LONG
  194. ENDCASE
  195. ENDDO
  196. RETURN
  197. END
  198.  
  199.  

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