C
C     PROGRAN-ID.     FTUPDATE.
C     AUTHOR.         RUTH DROZIN.
C     DATE-WRITTEN.   SEPTEMBER, 1978.
C     PURPOSE         CREATE AND MAINTAIN FILE OF FILETYPES.
C
      IMPLICIT INTEGER(A-Z)
      INTEGER COPYRITE(14)
     *  /'COPYRIGHT, (C) HONEYWELL INFORMATION SYSTEMS INC., 1979'/
        GLOBAL COPYRITE
      DIMENSION INFO(6),FUNCTION(2)
      DATA BUFSIZE/24/
      DATA KEYSIZE/4/
      DATA KEY/'9999'/
      DATA INFO/'TOTALS  ',4*'    '/
      DATA FUNCTION/'CADRE   '/
C
C     PROGRAM STARTS
C
      WRITE(108,100)
C
C     GET THE FUNCTION
C
 10   CONTINUE
      OUTPUT'   TYPE  C,A,D,R OR E '
 12   CONTINUE
      READ(105,101)IN
C
C     CHECK FOR VALID FUNCTION
C
      DO 20 K=1,5
      CALL CBS(FUNCTION,K,IN,1,1,RES)
      IF(RES.EQ.0)GO TO 25
 20   CONTINUE
C
C     INVALID FUNCTION
C
      OUTPUT'   INVALID FUNCTION; RETYPE '
      GO TO 12
C
 25   CONTINUE
C
C     VALID FUNCTION - CHECK TO SEE IF FILE EXISTS
C
      CALL KOPENIO(102,ERR)
      IF(K.EQ.1.AND.ERR.EQ.0)STOP' FILE ALREADY EXISTS'
      IF(K.NE.1.AND.ERR.EQ.3)WRITE(108,103);GO TO 1000
C
C     BRANCH TO APPROPRIATE CODE
C
      GO TO (1000,2000,3000,4000,5000)K
C
C     CREATE FUNCTION; OPEN FILE OUTPUT
C
 1000 CONTINUE
      CALL KOPENOUT(102,ERR)
      IF(ERR.NE.0)OUTPUT ERR;STOP' OPEN OUT ERR'
C
C     WRITE RECORD WITH KEY = 9999 AND INFO = TOTALS
C
      INFO(6)=KEY
      IF(ERR.NE.0)OUTPUT ERR;STOP' WRITING 9999 KEY'
C
C     CLOSE FILE AND OPEN INOUT
C
      CALL KCLOSES(102,ERR)
      IF(ERR.NE.0)OUTPUT ERR;STOP' CLOSE OUTPUT FID'
      CALL KOPENIO(102,ERR)
      IF(ERR.NE.0)OUTPUT ERR;STOP' OPEN I/O ERROR'
      OUTPUT ' FILE CREATED'
C
      GO TO 10
C
C     ADD-MODIFY FUNCTION
C
 2000 CONTINUE
C
C     GET THE KEY
C
      OUTPUT '   KEY OR END'
      READ(105,104)KEY
      IF(KEY.EQ.3HEND)GO TO 10
C
C     GET THE FILETYPE NAME
C
      OUTPUT'   FILETYPE? '
      READ(105,105)(INFO(I),I=1,5)
C
C     WRITE THE RECORD)
C
      INFO(6)=KEY
      CALL KWRITEO(102,KEY,KEYSIZE,INFO,BUFSIZE,ERR)
      IF(ERR.NE.0)OUTPUT ERR;STOP' WRITE ERROR'
C
      GO TO 2000
C
C     DELETE FUNCTION
C
 3000 CONTINUE
C
C     GET THE KEY
C
      OUTPUT' KEY?'
      READ(105,104)KEY
C
C     DO THE DELETE
C
      CALL KDELETE(102,KEY,KEYSIZE,ERR)
      IF(ERR.EQ.2Z43)OUTPUT ' INVALID KEY';GO TO 10
      IF(ERR.NE.0)OUTPUT ERR;STOP' DELETE ERROR'
C
      GO TO 10
C
C     REVIEW FUNCTION
C
 4000 CONTINUE
C
C     GET THE KEY
C
      OUTPUT'   KEY? '
      READ(105,104)KEY
C
C     READ THE RECORD
C
      CALL KREAD(102,KEY,KEYSIZE,INFO,BUFSIZE,ERR)
      IF(ERR.EQ.2Z43)OUTPUT' INVALID KEY';GO TO 10
      IF(ERR.NE.0)OUTPUT ERR;STOP' READ ERROR'
      WRITE(108,106)INFO(6),(INFO(I),I=1,5)
C
      GO TO 10
C
C     END FUNCTION
C
 5000 CONTINUE
C
C     CLOSE AND SAVE THE FILE
C
      CALL KCLOSES(102,ERR)
      IF(ERR.NE.0)OUTPUT ERR;STOP' CLOSE AT END ERROR'
      STOP ' END OF RUN'
 100  FORMAT(' VALID FUNCTIONS: C = CREATE',/,
     -18X,'A = ADD-MODIFY',/,18X,'D = DELETE',/,
     -18X,'R = REVIEW',/,18X,'E = END')
 101  FORMAT(A1)
 103  FORMAT(' FILE WILL BE CREATED FOR YOU')
 104  FORMAT(A4)
 105  FORMAT(5A4)
 106  FORMAT(' KEY = ',A4, '   FILETYPE = ',5A4)
      END
