      PROGRAM LIBRARY
      COMMON/WORD/NAME
      CHARACTER*40 NAME
      LOGICAL GETNAM
      INTEGER RDLIB,EXTRACT,WRAOF,APPEND,WRLIB
   10 PRINT *,'Old library file:'
      IF(GETNAM('lib')) STOP
      I=RDLIB(NAME)
      IF (I)     20,40,30
   20 PRINT 101,NAME
  101 FORMAT('+Can not find file: ',A)
      GO TO 10
   30 IF(I.GT.0) PRINT 102,NAME
  102 FORMAT('+File: ',A,' is not library')
      GO TO 10
   40 CALL PRMOD
      PRINT 103
  103 FORMAT(' Module to extract:')
      IF(GETNAM('   ')) GO TO 60
      IF(EXTRACT(NAME).EQ.0) GO TO 50
      PRINT 104,NAME,10
  104 FORMAT('+Can not find module: ',A,A1)
      GO TO 40
   50 CALL DELMOD
      PRINT 105
  105 FORMAT('+ New object file:')
      IF(GETNAM('aof')) GO TO 40
      IF(WRAOF(NAME).EQ.0) GO TO 40
      PRINT 106,NAME,10
  106 FORMAT('+Can not write file: ',A,A1)
      GO TO 50
   60 PRINT 107
  107 FORMAT('+Object file to add:')
      IF(GETNAM('aof')) GO TO 90
      IF(APPEND(NAME)) 70,60,80
   70 PRINT 108,NAME,10
  108 FORMAT('+Can not find file: ',A,A1)
      GO TO 60
   80 PRINT 109,NAME,10
  109 FORMAT('+File: ',A,' is not aof',A1)
      GO TO 60
   90 PRINT 110
  110 FORMAT('+New library file:')
      IF(GETNAM('lib')) STOP
      IF(WRLIB(NAME).EQ.0) STOP
      PRINT 111,NAME,10
  111 FORMAT('+Can not write file: ',A,A1)
      GO TO 90
      END
      LOGICAL FUNCTION GETNAM(TAG)
      COMMON/WORD/NAME
      CHARACTER*40 NAME
      CHARACTER*3 TAG
      CALL PRBLNK
      GETNAM=.TRUE.
      READ(*,101)NAME
  101 FORMAT(A)
      IF(NAME.EQ.' ') RETURN
      GETNAM=.FALSE.
      IF(TAG.EQ.' ') RETURN
      IF(INDEX(NAME,'-').GT.0) RETURN
      I=INDEX(NAME,' ')
      NAME(I:I+3)='-'//TAG
      RETURN
      END
      SUBROUTINE PRMOD
C            TO PRINT MODULE NAMES
      COMMON/WORD/NAME
      CHARACTER*40 NAME
      COMMON/NAMES/MOD(500)
      CHARACTER*16 MOD,TEMP
      COMMON/NNAM/N
      NC=0
      DO 50 I=1,N
      L=INDEX(MOD(I),' ')-1
      IF(L.LT.0) L=16
      IF(NC.EQ.0) THEN
        PRINT 103,MOD(I)(1:L)
  103   FORMAT('*',A)
        NC=L
      ELSE
        NC=NC+L+1
        IF(NC.LE.80) THEN
          PRINT 101,MOD(I)(1:L)
  101     FORMAT('* ',A)
          IF(NC.EQ.80) NC=0
        ELSE
          NC=L
          PRINT 102,MOD(I)(1:L)
  102     FORMAT(' ',A)
        ENDIF
      ENDIF
   50 CONTINUE
   60 RETURN
C            DELETE ENTRY 'NAME'
      ENTRY DELMOD
      L=INDEX(NAME,' ')-1
      DO 70 I=1,N
      IF(NAME(1:L).NE.MOD(I)(1:L)) GO TO 70
      IF(L.GE.16.OR.MOD(I)(L+1:L+1).EQ.' ') GO TO 80
   70 CONTINUE
      RETURN
   80 DO 90 J=I+1,N
      MOD(J-1)=MOD(J)
   90 CONTINUE
      N=N-1
      RETURN
      END
