C OOOBPH    SOURCE    PV090527  26/04/24    08:23:01     12524          
CMODE 92/04/03 13:28:36     ESOPV10
      SUBROUTINE OOOBPH (HNOMV,PSEG,PARCH,HNOMVA,IDIM,NDIM,
     * NBMAX)
C---------------------------------------------------------------------
C                 DESARCHIVAGE DE SEGMENTS
C      HNOMV       : NOM DU TABLEAU OU DE LA VARIABLE SIMPLE
C      PSEG        : SEGMENT ORIGINE
C      PARCH       : SEGMENT ARCHIVE
C      HNOMVA      : TABLEAU TRANSMIS
C      IDIM(NDIM)  : DIMENSIONS DU TABLEAU
C      NDIM        : NOMBRE DE DIMENSIONS D'UN TABLEAU
C      NBMAX       : NOMBRE MAX DE VALEURS A ARCHIVER
C
C      LONGUEURS:
C      =========
C      LOGIQUE: 5
C      INTEGER: 11  INTEGER*2 : 6   INTEGER*1 : 4
C      REAL*4 : 16  REAL*8    : 25  REAL*16   : 42
C      COMPLEX*8 : 35  COMPLEX*16: 53  COMPLEX*32 : 87
C
C  H_MULLEMAN LE  18/8/1991
C-----------------------------------------------------------------------
%INC IOOARC
%INC IOOCH
%INC IOOCH2
      LOGICAL VRAI
C
C-----------------------------------------------------------------------
C
      KAS=CHARACTER
                                                       GO TO 20
      ENTRY OOOBPL (HNOMV,PSEG,PARCH,LNOMVA,IDIM,NDIM,NBMAX)
      KAS=LOGICAL
                                                       GO TO 20
      ENTRY OOOBPM (HNOMV,PSEG,PARCH,MNOMVA,IDIM,NDIM,NBMAX)
      KAS=LOGICAL_2
                                                       GO TO 20
      ENTRY OOOBPN (HNOMV,PSEG,PARCH,NNOMVA,IDIM,NDIM,NBMAX)
      KAS=LOGICAL_1
                                                       GO TO 20
      ENTRY OOOBPI (HNOMV,PSEG,PARCH,INOMVA,IDIM,NDIM,NBMAX)
      KAS=INTEGER
                                                       GO TO 20
      ENTRY OOOBPJ (HNOMV,PSEG,PARCH,JNOMVA,IDIM,NDIM,NBMAX)
      KAS=INTEGER_2
                                                       GO TO 20
      ENTRY OOOBPK (HNOMV,PSEG,PARCH,KNOMVA,IDIM,NDIM,NBMAX)
      KAS=INTEGER_1
                                                       GO TO 20
      ENTRY OOOBPR (HNOMV,PSEG,PARCH,RNOMVA,IDIM,NDIM,NBMAX)
      KAS=REAL_4
                                                       GO TO 20
      ENTRY OOOBPD (HNOMV,PSEG,PARCH,DNOMVA,IDIM,NDIM,NBMAX)
      KAS=REAL_8
                                                       GO TO 20
      ENTRY OOOBPQ (HNOMV,PSEG,PARCH,QNOMVA,IDIM,NDIM,NBMAX)
      KAS=REAL_16
                                                       GO TO 20
      ENTRY OOOBPC (HNOMV,PSEG,PARCH,CNOMVA,IDIM,NDIM,NBMAX)
      KAS=COMPLEX
                                                       GO TO 20
      ENTRY OOOBPY (HNOMV,PSEG,PARCH,YNOMVA,IDIM,NDIM,NNMAX)
      KAS=COMPLEX_16
                                                       GO TO 20
      ENTRY OOOBPZ (HNOMV,PSEG,PARCH,ZNOMVA,IDIM,NDIM,NBMAX)
      KAS=COMPLEX_32
                                                       GO TO 20
      ENTRY OOOBPP (HNOMV,PSEG,PARCH,INOMVA,IDIM,NDIM,NBMAX)
      KAS=POINTEUR
C
  20  CONTINUE
C
C
      NMAX=1
      IF(NDIM.EQ.0) THEN
      ELSE
C
        CASE , KAS
        WHEN , CHARACTER
        IF (NDIM.EQ.1) THEN
        ELSE
          DO I=2,NDIM
            NMAX=NMAX*IDIM(I)
          ENDDO
        ENDIF
C
        WHENOTHERS
        DO I=1,NDIM
         NMAX=NMAX*IDIM(I)
        ENDDO
      ENDCASE
      ENDIF
C
      IF (NMAX.GE.NBMAX) NMAX=NBMAX
      DO I=1,NMAX
        CASE           ,KAS
        WHEN , LOGICAL , LOGICAL_2 , LOGICAL_1
            CH5=PARCH.CHARIV(INDICE:INDICE)
            INDICE=INDICE+1
            IF (CH5(1:1).EQ.'T') THEN
              VRAI=.TRUE.
            ELSE
              VRAI=.FALSE.
            ENDIF
             CASE , KAS
              WHEN , LOGICAL
               IF(VRAI) THEN
                 LNOMVA(I)=.TRUE.
               ELSE
                 LNOMVA(I)=.FALSE.
               ENDIF
              WHEN , LOGICAL_2
               IF(VRAI) THEN
                 MNOMVA(I)=.TRUE.
               ELSE
                 MNOMVA(I)=.FALSE.
               ENDIF
              WHEN , LOGICAL_1
               IF(VRAI) THEN
                 NNOMVA(I)=.TRUE.
               ELSE
                 NNOMVA(I)=.FALSE.
               ENDIF
              ENDCASE
C
          WHEN , INTEGER , POINTEUR
            CH11=PARCH.CHARIV(INDICE:INDICE+11)
C           INOMVA(I)=IVAL(CH11,11)
            READ(CH11,FMT='(I11)') INOMVA(I)
            INDICE=INDICE+11
C
          WHEN , INTEGER_2
            CH6=PARCH.CHARIV(INDICE:INDICE+6)
C           JNOMVA(I)=IVAL(CH6,6)
            READ(CH6,FMT='(I6)') JNOMVA(I)
            INDICE=INDICE+6
C
          WHEN , INTEGER_1
            CH6=PARCH.CHARIV(INDICE:INDICE+6)
C           KNOMVA(I)=IVAL(CH6,6)
            READ(CH6,FMT='(I6)') KNOMVA(I)
            INDICE=INDICE+6
C
          WHEN , REAL_4
            CH16=PARCH.CHARIV(INDICE:INDICE+16)
C           RNOMVA(I)=VAL(CH16,16)
            READ(CH16,FMT='(E16.9)') RNOMVA(I)
            INDICE=INDICE+16
C
          WHEN , REAL_8
            CH25=PARCH.CHARIV(INDICE:INDICE+25)
C           DNOMVA(I)=VAL(CH25,25)
            READ(CH25,FMT='(E25.18)') DNOMVA(I)
            INDICE=INDICE+25
C
          WHEN , REAL_16
            CH42=PARCH.CHARIV(INDICE:INDICE+42)
C           QNOMVA(I)=VAL(CH42,42)
            READ(CH42,FMT='(E42.35)') QNOMVA(I)
            INDICE=INDICE+42
C
          WHEN , COMPLEX
            CH16=PARCH.CHARIV(INDICE:INDICE+16)
C           CNOMVA(1,I)=VAL(CH16,16)
            READ(CH16,FMT='(E16.9)') CNOMVA(1,I)
            INDICE=INDICE+16
            CH16=PARCH.CHARIV(INDICE:INDICE+16)
C           CNOMVA(2,I)=VAL(CH16,16)
            READ(CH16,FMT='(E16.9)') CNOMVA(2,I)
            INDICE=INDICE+16
          WHEN , COMPLEX_16
            CH25=PARCH.CHARIV(INDICE:INDICE+25)
C           YNOMVA(1,I)=VAL(CH25,25)
            READ(CH25,FMT='(E25.18)') YNOMVA(1,I)
            INDICE=INDICE+25
            CH25=PARCH.CHARIV(INDICE:INDICE+25)
C           YNOMVA(2,I)=VAL(CH25,25)
            READ(CH25,FMT='(E25.18)') YNOMVA(2,I)
            INDICE=INDICE+25
          WHEN , COMPLEX_32
            CH42=PARCH.CHARIV(INDICE:INDICE+42)
C           ZNOMVA(1,I)=VAL(CH42,42)
            READ(CH42,FMT='(E42.35)') ZNOMVA(1,I)
            INDICE=INDICE+42
            CH42=PARCH.CHARIV(INDICE:INDICE+42)
C           ZNOMVA(2,I)=VAL(CH42,42)
            READ(CH42,FMT='(E42.35)') ZNOMVA(2,I)
            INDICE=INDICE+42
          WHEN , CHARACTER
          LONG=LEN(HNOMVA(I))
          HNOMVA(I)(1:LONG)= PARCH.CHARIV(INDICE:INDICE+LONG-1)
            INDICE=INDICE+LONG
          ENDCASE
      ENDDO
      RETURN
      END
 
