c============================================================
c  from (TINKER xyz by MOLDA) to DV-Xa(F01)
c    2004.10.25  Version 1.0      Sakane, Genta
c============================================================
      program molda2dv
      real*8 moldax(1000),molday(1000),moldaz(1000),
     &dvx(1000),dvy(1000),dvz(1000)
      real*8 bohr
      integer natom,moldan(1000),dve(1000)
      character*2 moldae(1000)
      open (unit=05, form='formatted', status='old',
     &      access='sequential', file='molda.xyz')
      open (unit=07, form='formatted', status='unknown',
     &      access='sequential', file='F01.DV')
      bohr=0.5291772083
      read(5,1001) natom
      do 101 i=1,natom
      read(5,1002,err=102,end=103) moldan(i),moldae(i),
     &moldax(i),molday(i),moldaz(i)
      if(moldae(i).eq.' H') dve(i)=1
      if(moldae(i).eq.'He') dve(i)=2
      if(moldae(i).eq.'Li') dve(i)=3
      if(moldae(i).eq.'Be') dve(i)=4
      if(moldae(i).eq.' B') dve(i)=5
      if(moldae(i).eq.' C') dve(i)=6
      if(moldae(i).eq.' N') dve(i)=7
      if(moldae(i).eq.' O') dve(i)=8
      if(moldae(i).eq.' F') dve(i)=9
      if(moldae(i).eq.'Ne') dve(i)=10
      if(moldae(i).eq.'Na') dve(i)=11
      if(moldae(i).eq.'Mg') dve(i)=12
      if(moldae(i).eq.'Al') dve(i)=13
      if(moldae(i).eq.'Si') dve(i)=14
      if(moldae(i).eq.' P') dve(i)=15
      if(moldae(i).eq.' S') dve(i)=16
      if(moldae(i).eq.'Cl') dve(i)=17
      if(moldae(i).eq.'Ar') dve(i)=18
      if(moldae(i).eq.' K') dve(i)=19
      if(moldae(i).eq.'Ca') dve(i)=20
      if(moldae(i).eq.'Sc') dve(i)=21
      if(moldae(i).eq.'Ti') dve(i)=22
      if(moldae(i).eq.' V') dve(i)=23
      if(moldae(i).eq.'Cr') dve(i)=24
      if(moldae(i).eq.'Mn') dve(i)=25
      if(moldae(i).eq.'Fe') dve(i)=26
      if(moldae(i).eq.'Co') dve(i)=27
      if(moldae(i).eq.'Ni') dve(i)=28
      if(moldae(i).eq.'Cu') dve(i)=29
      if(moldae(i).eq.'Zn') dve(i)=30
      if(moldae(i).eq.'Ga') dve(i)=31
      if(moldae(i).eq.'Ge') dve(i)=32
      if(moldae(i).eq.'As') dve(i)=33
      if(moldae(i).eq.'Se') dve(i)=34
      if(moldae(i).eq.'Br') dve(i)=35
      if(moldae(i).eq.'Kr') dve(i)=36
      if(moldae(i).eq.'Rb') dve(i)=37
      if(moldae(i).eq.'Sr') dve(i)=38
      if(moldae(i).eq.' Y') dve(i)=39
      if(moldae(i).eq.'Zr') dve(i)=40
      if(moldae(i).eq.'Nb') dve(i)=41
      if(moldae(i).eq.'Mo') dve(i)=42
      if(moldae(i).eq.'Tc') dve(i)=43
      if(moldae(i).eq.'Ru') dve(i)=44
      if(moldae(i).eq.'Rh') dve(i)=45
      if(moldae(i).eq.'Pd') dve(i)=46
      if(moldae(i).eq.'Ag') dve(i)=47
      if(moldae(i).eq.'Cd') dve(i)=48
      if(moldae(i).eq.'In') dve(i)=49
      if(moldae(i).eq.'Sn') dve(i)=50
      if(moldae(i).eq.'Sb') dve(i)=51
      if(moldae(i).eq.'Te') dve(i)=52
      if(moldae(i).eq.' I') dve(i)=53
      if(moldae(i).eq.'Xe') dve(i)=54
      if(moldae(i).eq.'Cs') dve(i)=55
      if(moldae(i).eq.'Ba') dve(i)=56
      if(moldae(i).eq.'La') dve(i)=57
      if(moldae(i).eq.'Ce') dve(i)=58
      if(moldae(i).eq.'Pr') dve(i)=59
      if(moldae(i).eq.'Nd') dve(i)=60
      if(moldae(i).eq.'Pm') dve(i)=61
      if(moldae(i).eq.'Sm') dve(i)=62
      if(moldae(i).eq.'Eu') dve(i)=63
      if(moldae(i).eq.'Gd') dve(i)=64
      if(moldae(i).eq.'Tb') dve(i)=65
      if(moldae(i).eq.'Dy') dve(i)=66
      if(moldae(i).eq.'Ho') dve(i)=67
      if(moldae(i).eq.'Er') dve(i)=68
      if(moldae(i).eq.'Tm') dve(i)=69
      if(moldae(i).eq.'Yb') dve(i)=70
      if(moldae(i).eq.'Lu') dve(i)=71
      if(moldae(i).eq.'Hf') dve(i)=72
      if(moldae(i).eq.'Ta') dve(i)=73
      if(moldae(i).eq.' W') dve(i)=74
      if(moldae(i).eq.'Re') dve(i)=75
      if(moldae(i).eq.'Os') dve(i)=76
      if(moldae(i).eq.'Ir') dve(i)=77
      if(moldae(i).eq.'Pt') dve(i)=78
      if(moldae(i).eq.'Au') dve(i)=79
      if(moldae(i).eq.'Hg') dve(i)=80
      if(moldae(i).eq.'Tl') dve(i)=81
      if(moldae(i).eq.'Pb') dve(i)=82
      if(moldae(i).eq.'Bi') dve(i)=83
      if(moldae(i).eq.'Po') dve(i)=84
      if(moldae(i).eq.'At') dve(i)=85
      if(moldae(i).eq.'Rn') dve(i)=86
      if(moldae(i).eq.'Fr') dve(i)=87
      if(moldae(i).eq.'Ra') dve(i)=88
      if(moldae(i).eq.'Ac') dve(i)=89
      if(moldae(i).eq.'Th') dve(i)=90
      if(moldae(i).eq.'Pa') dve(i)=91
      if(moldae(i).eq.' U') dve(i)=92
      if(moldae(i).eq.'Np') dve(i)=93
      if(moldae(i).eq.'Pu') dve(i)=94
      if(moldae(i).eq.'Am') dve(i)=95
      if(moldae(i).eq.'Cm') dve(i)=96
      if(moldae(i).eq.'Bk') dve(i)=97
      if(moldae(i).eq.'Cf') dve(i)=98
      if(moldae(i).eq.'Es') dve(i)=99
      if(moldae(i).eq.'Fm') dve(i)=100
      if(moldae(i).eq.'Md') dve(i)=101
      if(moldae(i).eq.'No') dve(i)=102
      if(moldae(i).eq.'Lr') dve(i)=103
      if(moldae(i).eq.'Rf') dve(i)=104
      if(moldae(i).eq.'Db') dve(i)=105
      if(moldae(i).eq.'Sg') dve(i)=106
      if(moldae(i).eq.'Bh') dve(i)=107
      if(moldae(i).eq.'Hs') dve(i)=108
      if(moldae(i).eq.'Mt') dve(i)=109
      if(moldae(i).eq.'Ds') dve(i)=110
      if(moldae(i).eq.'Rg') dve(i)=111
      dvx(i)=moldax(i)
      dvy(i)=molday(i)
      dvz(i)=moldaz(i)
  101 continue
      write(7,2001)
      do 201 i=1,natom
      write(7,2002) dve(i),i,dvx(i),dvy(i),dvz(i)
  201 continue
      write(7,2003)
      write(7,2004)
      write(7,2003)
      write(7,2005)
      write(7,2006)
      write(7,2007)
      write(7,2008)
      go to 104
  102 write(*,1003)
      go to 104
  103 write(*,1004)
  104 continue
      stop
 1001 format(2x,i4)
 1002 format(2x,i4,1x,a2,2x,3(f12.6))
 1003 format('*** Read Error ***')
 1004 format('*** Data Not Found ***')
 2001 format('| Z ||NEQ||   X    ||   Y    ||   Z    |')
 2002 format(2x,i3,1x,i4,3(f10.5))
 2003 format('---------------------------------------------')
 2004 format('|NEQ||  CHG   ||U/D||   RD   ||   VD   |    1')
 2005 format('    0     Unit     (0:angstrom  1:atomic)')
 2006 format('    0     Spin     (0:non-spin  1:spin  )')
 2007 format('    0     M.P.     (0:No        1:Yes   )')
 2008 format('    0     Sample Point ( <100000, =0 autoset )')
      end
