PROGRAM deletewat2 c Reads output from checkwat3 and deletes the waters using the c residue number CHARACTER*103 filnam, line LOGICAL flag(999)/999*.FALSE./ WRITE (6, 1000) 'Enter PDB mnemonic:' READ (5, 1000) filnam len = length(filnam) c First read list of waters in native PCD DO WHILE (.TRUE.) READ (5, 1000, end=9) line 1000 FORMAT (a) IF (line(1:6) .EQ. 'Delete') THEN READ (line(11:13), 1001) n 1001 FORMAT (i3) flag(n) = .TRUE. endIF endDO 9 CLOSE (unit=1) c Now handle PDB file OPEN (unit=1, form='FORMATTED', status='OLD', readonly, 1 file=filnam(1:len)//'.pdb') OPEN (unit=2, form='FORMATTED', status='UNKNOWN', 1 file=filnam(1:len)//'.deletewat') DO WHILE (.TRUE.) 15 READ (1, 1000, end=99) line IF (line(1:4) .EQ. 'ATOM' .OR. line(1:6) .EQ. 'HETATM') THEN READ (line(24:26), 1001) n IF (flag(n)) goto 15 endIF len = length(line) WRITE (2, 1000) line(1:len) endDO 99 CLOSE (unit=1) CLOSE (unit=2) end INTEGER FUNCTION length(line) CHARACTER*103 line DO i = 103,1,-1 IF (line(i:i) .NE. ' ') goto 9 endDO 9 length = i return end