1C
2C This file is issued from the MODULEF library, but has been
3C subsequently modified
4C
5      SUBROUTINE FONAID(CIDEN,NUMERO,ICODE)
6C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7C           S.P. FONAID          (FONCTIONS INTERPRETEES)
8C           -----------
9C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
10C BUT :
11C     AJOUTER UN IDENTIFICATEUR DANS LA TABLE DES IDENTIFICATEURS
12C
13C PARAMETRES D ENTREE :
14C     CIDEN   : IDENTIFICATEUR A AJOUTER
15C
16C PARAMETRES DE SORTIE :
17C     NUMERO  : NUMERO DANS LA TABLE DES IDENTIFICATEURS
18C     ICODE   : CODE DE RETOUR (VOIR LE S.P. FONERR)
19C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
20C PROGRAMMEUR : PATRICK LAUG ; INRIA (3) 954 90 20 POSTE 508
21C ......................................................................
22      PARAMETER (LIDN=8)
23      CHARACTER*(*) CIDEN
24      CHARACTER*256 MIDN(LIDN)
25      COMMON /FONIDN/ MIDN
26      COMMON /FONNUM/ IDLIG,IFLIG,NITEMS,NBIDEN,IMPLIC
27      COMMON /FONLC / LCI,LCR,LCL,LCC,LCD,LCOPN,LCOPT,LCSYM,LCEXP,LCIDN
28      COMMON /FONLM / LMI,LMR,LML,LMC,LMD,LMOPN,LMOPT,LMSYM,LMEXP,LMIDN
29C
30C L'IDENTIFICATEUR EST-IL DEJA DANS LA TABLE ?
31      CALL FONCID(CIDEN,NUMERO,ICODE)
32      IF (ICODE.EQ.0) THEN
33         ICODE = 22
34         RETURN
35      END IF
36C
37C ON N'A PAS TROUVE L'IDENTIFICATEUR
38      IDEB = INDEX(MIDN(LCIDN), '||') + 1
39      LTOTAL = IDEB + LEN(CIDEN) + 1
40      IF (LTOTAL .GT. 256) THEN
41         LCIDN = LCIDN + 1
42         IF (LCIDN .GT. LMIDN) THEN
43            ICODE = 31
44            RETURN
45         END IF
46         MIDN(LCIDN)(1:1) = '|'
47         IDEB = 2
48         LTOTAL = LEN(CIDEN) + 3
49      END IF
50      MIDN(LCIDN)(IDEB:LTOTAL-2)   = CIDEN
51      MIDN(LCIDN)(LTOTAL-1:LTOTAL) = '||'
52      NBIDEN = NBIDEN + 1
53      ICODE = 0
54      END
55