$CDS ON 
$ALIAS IXXOR,EMA
      LOGICAL*4 FUNCTION MOREINLIB()  ! modif du 21/7/87
      LOGICAL*4 FROMLIB 
      COMMON /CMRMEXPLORELIB/ FROMLIB,NBDANSLIBRM,DANSLIBRM 
      CHARACTER*24 LIBFICH(2) 
      CHARACTER*80 LIGNE
      CHARACTER*8 SUBCKTNAME
      REAL*8 DSUBCKTNAME,DANSLIBRM(1) 
      INTEGER*4 NBDANSLIBRM,IXXOR 
      INTEGER*2 LONG
  
      LOGICAL INSUBCKT,LTROUVE
      EQUIVALENCE(DSUBCKTNAME,SUBCKTNAME) 
  
      SAVE INSUBCKT,LIBFICH,ILIBSRC,LTROUVE 
      DATA LIBFICH/'SPICE.LBS','/BIBLIOTHEQUE/SPICE.LBS'/ 
  
      MOREINLIB=.FALSE. 
      IF(NBDANSLIBRM.GT.0) GOTO 20
      IF(NBDANSLIBRM.EQ.0) STOP 'ErrMoreDansLib!' 
      NBDANSLIBRM=-NBDANSLIBRM
5     ILIBSRC=1 
      LTROUVE=.FALSE. 
10    CLOSE(UNIT=5) 
      OPEN(UNIT=5,FILE=LIBFICH(ILIBSRC),STATUS='OLD',USE= 
     1     'NONEXCLUSIVE',IOSTAT=IOS) 
      IF(IOS.NE.0) GOTO 300 
20    INSUBCKT=.FALSE.
30    READ(5,'(A)',END=100) LIGNE 
      IF(INSUBCKT) THEN 
        IENDS=INDEX(LIGNE,'.ENDS')
        IF(IENDS.EQ.0) GOTO 30
        IF(IENDS.GT.1) THEN 
          IF(LIGNE(1:IENDS-1).NE.' ') GOTO 30 
        ENDIF 
        INSUBCKT=.FALSE.
        GOTO 30 
      ELSE
        ISUBCKT=INDEX(LIGNE,'.SUBCKT')
        IF(ISUBCKT.EQ.0) GOTO 30
        IF(ISUBCKT.GT.1) THEN 
          IF(LIGNE(1:ISUBCKT-1).NE.' ') GOTO 30 
        ENDIF 
        INSUBCKT=.TRUE. 
        ISUBCKT=ISUBCKT+7 
        DO WHILE(LIGNE(ISUBCKT:ISUBCKT).EQ.' ') 
          ISUBCKT=ISUBCKT+1 
          IF(ISUBCKT.GT.80) THEN
            WRITE(6,40) 
     1           ' *** Il manque un nom de sous-circuit dans la ',
     2           'bibliotheque ',LIBFICH(ILIBSRC),' ***'
40              FORMAT(1X,5A) 
            RETURN
          ENDIF 
        ENDDO 
        ISUBCKTFIN=ISUBCKT
        DO WHILE(LIGNE(ISUBCKTFIN:ISUBCKTFIN).NE.' ') 
          ISUBCKTFIN=ISUBCKTFIN+1 
          IF(ISUBCKTFIN.EQ.80) GOTO 50
        ENDDO 
        ISUBCKTFIN=ISUBCKTFIN-1 
50      SUBCKTNAME=LIGNE(ISUBCKT:MIN(ISUBCKT+7,ISUBCKTFIN)) 
        IF(ISUBCKTFIN.GT.ISUBCKT+7) THEN
          WRITE(6,40) ' *** Nom du sous-circuit ',LIGNE(ISUBCKT:
     1       ISUBCKTFIN),' depasse 8 caracteres dans ',LIBFICH(ILIBSRC),
     2              ' *** ' 
              WRITE(6,40) ' *** Nom du sous-circuit tronque a ',
     1             SUBCKTNAME,' ***'
        ENDIF 
        DO I=1,NBDANSLIBRM
          IF(IXXOR(DSUBCKTNAME,DANSLIBRM(I)).EQ.0) THEN 
            LLIBFICH=LONG(LIBFICH(ILIBSRC)) 
            WRITE(6,40) 'Sous-circuit ',SUBCKTNAME, 
     1             ' trouve dans ',LIBFICH(ILIBSRC)(1:LLIBFICH),' :'
            BACKSPACE(5)
            DO II=I+1,NBDANSLIBRM 
              DANSLIBRM(II-1)=DANSLIBRM(II) 
            ENDDO 
            NBDANSLIBRM=NBDANSLIBRM-1 
            MOREINLIB=.TRUE.
            LTROUVE=.TRUE.
            RETURN
          ENDIF 
        ENDDO 
      ENDIF 
      GOTO 30 
100   IF(INSUBCKT) THEN 
        WRITE(6,40) ' *** Bibliotheque ',LIBFICH(ILIBSRC),
     1               ' incorrecte (manque .ENDS) ***' 
        RETURN
      ENDIF 
300   ILIBSRC=ILIBSRC+1 
      IF(ILIBSRC.LE.2) GOTO 10
      IF(LTROUVE) GOTO 5
      END 
