1      logical function argos_prep_disres(card,card2,isegm,csa,msa,nsa,
2     + inoe,dnoe,mnoe,nnoe)
3c
4c $Id$
5c
6      implicit none
7c
8#include "inp.fh"
9c
10      logical argos_prep_str_replace
11      external argos_prep_str_replace
12c
13      integer mnoe,nnoe,msa,nsa
14      integer isegm(msa),inoe(2,mnoe)
15      real*8 dnoe(5,mnoe)
16      character*16 csa(msa)
17      character*80 card,card2
18      integer i,ifr,ito
19      character*255 target,atomi,atomj
20      integer ndx,iatom,jatom,isgm,jsgm
21c
22      card=card(8:80)
23c
24      ifr=0
25      if(.not.inp_strtok(card,' ',ifr,ito))
26     + call md_abort('Unable to find atom',9999)
27      target=card(ifr:ito)//' '
28      ndx=index(target,':')
29      read(target(1:ndx-1),*) isgm
30      atomi=target(ndx+1:index(target,' ')-1)//'      '
31      if(.not.argos_prep_str_replace(atomi,'_',' '))
32     + call md_abort('argos_prep_str_replace',9999)
33      if(.not.inp_strtok(card,' ',ifr,ito))
34     + call md_abort('Unable to find atom',9999)
35      target=card(ifr:ito)//' '
36      ndx=index(target,':')
37      read(target(1:ndx-1),*) jsgm
38      atomj=target(ndx+1:index(target,' ')-1)//'      '
39      if(.not.argos_prep_str_replace(atomj,'_',' '))
40     + call md_abort('argos_prep_str_replace',9999)
41      iatom=0
42      jatom=0
43      do 1 i=1,nsa
44      if(isgm.eq.isegm(i).and.atomi(1:4).eq.csa(i)(11:14)) iatom=i
45      if(jsgm.eq.isegm(i).and.atomj(1:4).eq.csa(i)(11:14)) jatom=i
46    1 continue
47      if(iatom.eq.0.or.jatom.eq.0)
48     + call md_abort('argos_prep_disres error',9999)
49      nnoe=nnoe+1
50      if(nnoe.gt.mnoe) call md_abort('Increase mnoe',9999)
51      inoe(1,nnoe)=iatom
52      inoe(2,nnoe)=jatom
53      read(card2,1000) (dnoe(i,nnoe),i=1,5)
54 1000 format(3f12.6,2e12.5)
55c
56      argos_prep_disres=.true.
57      return
58c
59 9999 continue
60      argos_prep_disres=.false.
61      return
62      end
63