C
C This file is issued from the MODULEF library, but has been 
C subsequently modified
C
      SUBROUTINE IMALDY(M)
C  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C  BUT :    ALLOCATION DYNAMIQUE - LISTER LES TABLEAUX
C  ---
C  PARAMETRE : LE SUPER-TABLEAU
C  ---------
C  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C  PROGRAMMEUR : F. HECHT - INRIA - AVRIL 86
C  ...................................................................
      CHARACTER*256 NOM
      DIMENSION M(*)
      DATA IDEBUT/5/
10001 FORMAT (/1X,67('+'),/1X,10('+'),8X,
     +'IMPRESSION ALLOCATION DYNAMIQUE',8X,10('+')/1X,67('+'))
10000 FORMAT (
     +/' LONGUEUR EST LE NOMBRE DE MOTS DEMANDES'
     +/' ADRESSE  EST L''ADRESSE RETOURNEE'
     +/' IAMARQUE EST L''ADRESSE DU DESCRIPTEUR DE TABLEAU ',A4
     +/' NB  MOTS EST LE NOMBRE DE MOTS REELLEMENT UTILISES'
     +/' LE DERNIER MOT UTILISE DANS LE SUPER-TABLEAU EST :'
     +,I12//1X,68('-')/1X,
     +'| ESPACE | TYPE | LONGUEUR | ADRESSE  | IAMARQUE |',
     +' NB  MOTS | NOM  ',/,1X,68('-'))
 9999 FORMAT (1X,'| LIBRE  | .... | ........ | ........ |'
     +,1X,I8,' | ',I8,' |  ....')
 9998 FORMAT (1X,'| OCCUPE | ',I4,' |',4(1X,I8,' |'),' ',32A1)
 9997 FORMAT (1X,68('-'))
 9996 FORMAT (1X,' ERREUR DANS LES POINTEURS (IL Y A CERTAINEMENT',
     +' UN DEPASSEMENT DE LONGUEUR D UN TABLEAU '/
     +' STOP DANS LE SOUS PROGRAMME: IMALDY')
 9995 FORMAT(1X,'| ESPACE | TYPE | LONGUEUR | ADRESSE  | IAMARQUE |',
     +' NB  MOTS | NOM  ',/,1X,68('-'))
C
      LM = M(1)
      IMPRIM = IINFO('I')
      WRITE(IMPRIM,10001)
      WRITE(IMPRIM,10000) M(4),M(2)
      IA = 0
      IB = -IDEBUT
    5 IB = -IB
   10 IF(IA.GE.IB) GOTO 300
         IA = IB
         IF(IA.GT.LM) GOTO 100
         IB = M(IA)
         IF(IB.GT.0) GOTO 20
C          LIBRE
         WRITE(IMPRIM,9999)IA,-IB-IA-1
         GOTO 5
   20    CALL ZALDY6 (M,IA,NBC,NOM,ITYPE,LONG,IADRES)
   30    IBIA1=IB-IA-1
         WRITE(IMPRIM,9998) ITYPE,LONG,IADRES,IA,IBIA1,
     +                      (NOM(KK:KK),KK=1,NBC)
      GOTO 10
  100 IF(IA.NE.LM+1) GOTO 300
      WRITE(IMPRIM,9997)
      WRITE(IMPRIM,9995)
      RETURN
  300 CONTINUE
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C               ERREUR
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      WRITE(IMPRIM,9997)
      WRITE(IMPRIM,9996)
      STOP
      END
