      SUBROUTINE FAISC1 ( KREP, KRANG )
#include "facom0.h"
C****
C      Ce sous-programme initialise un tableau "reference" de
C      l'en-tete GRIB, section 1.
C      (routine appelee une seule fois pour un fichier donne)
C**
C    Arguments : KREP   (Sortie) ==> Code-reponse du sous-programme;
C                KRANG  (Entree) ==> Rang de l'unite logique;
C*
C
      USE FAMODU   , ONLY : NSEC1
C
#include "precision.h"
C
#include "facomp.h"
#include "facom1.h"
C
      INTEGER KREP, KRANG
C
      INTEGER I, INUMER, INIMES, IRANGC
C
#include "facom2.h"
C**
C     0.  -  INITIALISATIONS ET CONTROLES
C-----------------------------------------------------------------------
C
      KREP=0
      IF (KRANG.LE.0.OR.KRANG.GT.JPNXFA) THEN
        KREP=-66
        GOTO 1001
      ENDIF
      IRANGC=NUCADR(KRANG)
C**
C     1.  -  INIT. DU TAB. NSEC1 REPRESENTANT LA SECTION 1 DE GRIBEX
C-----------------------------------------------------------------------
C
C  2: identification of centre
C
C (defaut=85 pour Toulouse; pour en changer, utiliser FAREGU)
      NSEC1(2,KRANG) = 85
C  3: generating process identification number, alloc by the orig. centre
      IF (LIMLAM(IRANGC)) THEN
C Il s'agit du modele Aladin
        NSEC1(3,KRANG) = 177
      ELSE
C Il s'agit du modele Arpege
        IF (MADATE(7,KRANG).GT.0) THEN
C     prevision
          NSEC1(3,KRANG) = 211
        ELSE
C     analyse
          NSEC1(3,KRANG) = 201
C     analyse initialisee -> prevision
          IF (MADATE(9,KRANG).EQ.1) NSEC1(3,KRANG) = 211
        ENDIF
      ENDIF
C  4: grid definition
C     =255 for a non-catalogued grid (description follows in KSEC2)
      NSEC1(4,KRANG) = 255
C  5: flag showing whether sections 2 and 3 are present
C     128 --> Section 2 is included, Section 3 is omitted (no bitmap)
      NSEC1(5,KRANG) = 128
C  6 a 9: to be initialized later (specific to each field)
      NSEC1(6:9,KRANG) = 0
C 10 a 21: valeurs deduites de MADATE(1:11,KRANG)
C
C rappel :   2000 -->  an 100 (=NSEC1(10))  siecle 20 (=NSEC1(21))
C            2001 -->  an   1  "        "   siecle 21  "        "
C
      NSEC1(10,KRANG) = 1 + MOD(MADATE(1,KRANG) - 1 , 100)
      NSEC1(21,KRANG) = 1 + (MADATE(1,KRANG) - 1) / 100
      DO I=1,10
        NSEC1(10+I,KRANG) = MADATE(1+I,KRANG)
      ENDDO
C NSEC1(18,KRANG)=10 signifie un codage sur 2 octets de l'echeance
C Ce n'est pas le cas, donc on revient a 0 pour GRIBEX
      IF (NSEC1(18,KRANG)==10) NSEC1(18,KRANG)=0
C MADATE(10,KRANG) peut contenir l'echeance precedente dans le cas
C d'un calcul sur une periode (min, max par exemple): c'est une
C convention dans FA (depuis fin 2000) qui est incompatible avec
C GRIBEX. On retire donc cette valeur ici dans NSEC1, sachant
C qu'elle sera utilisee plus tard.
      NSEC1(19,KRANG) = 0
C
C**
C    10.  -  PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
C            VIA LE SOUS-PROGRAMME "FAIPAR" .
C-----------------------------------------------------------------------
C
 1001 CONTINUE
      LLFATA=LLMOER (KREP,KRANG)
C
      IF (LFAMOP.OR.LLFATA) THEN
        INIMES=2
        CLNSPR='FAISC1'
        INUMER=JPNIIL
C
        WRITE (UNIT=CLMESS,FMT='(''KREP='',I4,'', KRANG='',I4)')
     S     KREP, KRANG
        CALL FAIPAR (INUMER,INIMES,KREP,.FALSE.,CLMESS,CLNSPR,
     S               CLNSPR,.FALSE.)
      ENDIF
C
      RETURN
      END
