*
* $Id: fmgetl.F,v 1.1.1.1 1996/03/07 15:18:14 mclareni Exp $
*
* $Log: fmgetl.F,v $
* Revision 1.1.1.1  1996/03/07 15:18:14  mclareni
* Fatmen
*
*
#include "fatmen/pilot.h"
      SUBROUTINE FMGETL(GENAME,CHLINK,L,KEYS,CHOPT,IRC)
      CHARACTER*(*) GENAME,CHLINK
*
*     As FMGETK, but with link handling
*
      CHARACTER*20  FNAME1,FNAME2
#include "fatmen/fatbank.inc"
#include "fatmen/fatpara.inc"
#include "fatmen/fmnkeys.inc"
      DIMENSION       KEYS(LKEYFA)
 
      NCH=LENOCC(GENAME)
      CALL CLTOU(GENAME)
 
      L   = 0
      IRC = 0
 
      IF(IDEBFA.GE.2) THEN
         PRINT *,'FMGETL. enter for ',GENAME(1:NCH)
         CALL FMPKEY(KEYS,LKEYFA)
      ENDIF
 
      IF(NCH.LT.3.OR.GENAME(1:2).NE.'//'.OR.GENAME(NCH:NCH).EQ.'/')THEN
          IQUEST(1)=61
          GO TO 999
       ENDIF
 
      ICH=INDEXB(GENAME(1:NCH-1),'/')
      IF(ICH.LE.3.OR.NCH-ICH.GT.20) THEN
          IQUEST(1)=62
          GO TO 999
       ENDIF
 
      IF(LTDSFA.NE.0) THEN
         CALL MZDROP(IDIVFA,LTDSFA,'L')
         LTDSFA = 0
      ENDIF
 
      NWORDS = NKDSFA
      IFLAG  = 1
      JBIAS  = 1
 
      IF(KEYS(1).EQ.0) THEN
         IFLAG = 0
         CALL VZERO(KEYS,LKEYFA)
      ELSE
*
*     Check if file name in keys vector matches that in generic name
*
         FNAME1 = GENAME(ICH+1:NCH)
         LFN1   = NCH - ICH
         CALL UHTOC(KEYS(MKFNFA),4,FNAME2,(MKCLFA-MKFNFA)*4)
         LFN2   = LENOCC(FNAME2)
         IF(FNAME1(1:LFN1).NE.FNAME2(1:LFN2)) THEN
            IF(IDEBFA.GE.-3) PRINT *,'FMGETL. file name in ',
     +         'keys vector (',FNAME2(1:LFN2),') does not ',
     +         'match that in generic name (',FNAME1(1:LFN1),')'
            IQUEST(1) = -1
            GOTO 999
         ENDIF
      ENDIF
 
      CALL FMRZIN(GENAME(1:NCH),IDIVFA,LTDSFA,JBIAS,NWORDS,KEYS,IFLAG)
      IF(IQUEST(1).NE.0) GOTO 999
      L      = LTDSFA
*
*     Is this entry a link?
*
      IF(KEYS(MKLCFA).EQ.0) THEN
         CALL UHTOC(IQ(LTDSFA+KOFUFA+MFQNFA),4,CHLINK,NFQNFA)
         LCH = LENOCC(CHLINK)
         IF(IDEBFA.GE.0) PRINT *,'FMGETL. ',GENAME(1:NCH),
     +      '--> ',CHLINK(1:LCH)
         NCH = LCH
         CALL MZDROP(IDIVFA,LTDSFA,'L')
         LTDSFA = 0
         CALL VZERO(KEYS,LKEYFA)
         CALL FMRZIN(CHLINK(1:NCH),IDIVFA,LTDSFA,JBIAS,NWORDS,KEYS,
     +               IFLAG)
         IF(IQUEST(1).NE.0) GOTO 999
      ENDIF
 999  IRC    = IQUEST(1)
*
*     Return a zero bank address if not found
*
      IF(IRC.NE.0) L=0
      RETURN
      END