C
C This file is issued from the MODULEF library, but has been 
C subsequently modified
C
      SUBROUTINE FONDEF(M,CFON,IFON,ICODE)
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C           S.P. FONDEF          (FONCTIONS INTERPRETEES)
C           -----------
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C BUT :
C     ANALYSER LA DEFINITION D UNE FONCTION
C     <DEFINITION> ::= <SPECIFICATION> <CORPS>
C
C PARAMETRES D ENTREE :
C     M       : SUPER-TABLEAU
C
C PARAMETRES DE SORTIE :
C     CFON    : IDENTIFICATEUR DE LA FONCTION
C     IFON    : INDICE DE LA FONC. (NECESSAIRE POUR L EXECUTER ENSUITE)
C     ICODE   : CODE DE RETOUR (VOIR LE S.P. FONERR)
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C PROGRAMMEUR : PATRICK LAUG ; INRIA (3) 954 90 20 POSTE 508
C ......................................................................
      INTEGER M(*)
      CHARACTER*(*) CFON
      COMMON /FONNUM/ IDLIG,IFLIG,NITEMS,NBIDEN,IMPLIC
      COMMON /FONIA / IAI,IAR,IAL,IAC,IAD,IAOPN,IAOPT,IASYM,IAEXP,IAIDN
C
C SPECIFICATION DE L'EXPRESSION
      NBIDES = NBIDEN
      CALL FONSPE(M(IAEXP),M(IASYM),M(IAOPN),CFON,IFON,ICODE)
      IF (ICODE.NE.0) GOTO 900
C
C CORPS DE L'EXPRESSION
      CALL FONCOR(M,M(IAEXP),M(IAOPN),M(IAOPT),M(IASYM),ICODE)
      IF (ICODE.EQ.0) GOTO 950
C
C TRAITEMENT D'ERREUR
  900 CALL FONERR(1,ICODE)
      CALL FONDID(NBIDEN-NBIDES)
      IFON = -1
  950 RETURN
      END
