C
C This file is issued from the MODULEF library, but has been 
C subsequently modified
C
      SUBROUTINE FONAIT(NITEMP,MEXP,MOPN,ICODE)
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C           S.P. FONAIT          (FONCTIONS INTERPRETEES)
C           -----------
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C BUT :
C     AJOUTER UN ITEM DANS LA PILE DES EXPRESSIONS
C
C PARAMETRES D ENTREE :
C     NITEMP  : NUMERO DE CODE DE L ITEM (RETOURNE PAR FONSUI)
C     MEXP    : PILE DES EXPRESSIONS
C     MOPN    : PILE DES OPERANDES
C
C PARAMETRES DE SORTIE :
C     ICODE   : CODE DE RETOUR (VOIR LE S.P. FONERR)
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C PROGRAMMEUR : PATRICK LAUG ; INRIA (3) 954 90 20 POSTE 508
C ......................................................................
      DIMENSION MEXP(*),MOPN(*),MI(1)
      COMMON /FONLC / LCI,LCR,LCL,LCC,LCD,LCOPN,LCOPT,LCSYM,LCEXP,LCIDN
      COMMON /FONLM / LMI,LMR,LML,LMC,LMD,LMOPN,LMOPT,LMSYM,LMEXP,LMIDN
C
C OPTIMISATION : X ** 2 EST REMPLACE PAR X * X
      ICODE = 0
      NITEM = NITEMP
      IF (NITEM .EQ. 42 005) THEN
         IF (MEXP(LCEXP).EQ.31 001 .OR. MEXP(LCEXP).EQ.32 001) THEN
            MEXP(LCEXP) = MOPN(LCOPN-1)
            MOPN(LCOPN) = MOPN(LCOPN-1)
            NITEM = 42 003
         END IF
      END IF
C
C AJOUTER L'ITEM DANS L'EXPRESSION
      LCEXP = LCEXP + 1
      IF (LCEXP.GT.LMEXP) THEN
         ICODE = 10
         RETURN
      END IF
      MEXP(LCEXP) = NITEM
C
C SIMULATION D'EXECUTION POUR VERIFIER LES TYPES
C ET QUE L'INSTRUCTION EST CONNUE
      LCEXP = LCEXP - 1
      CALL FONINT(1,MEXP,MI,MI,MI,MI,MI,MOPN,ICODE)
      END
