***** 標高データをCReSSの使用形式に変換するプログラム(200×200) ********

      integer   n,m,play,i,j
      integer   ca(200),da(200),cb(200),db(200)
      integer   cc(200),dc(200),cd(200),dd(200)
      integer   xdeg, xmin, ydeg, ymin
      integer   h,hh,v,vv

      real      ea(200,200),eb(200,200)
      real      ec(200,200),ed(200,200)
      real      k(200,200)
      real      xsec, ysec

      character line*1011,fn1*4,fn2*2,fn3*4,fn4*2,fn5*4,fn6*2
      character fn7*4,fn8*2,fn9*4,fn10*2

      write(*,*)'標高データを編集する枚数を選んだください。'
      write(*,*)'＊ただし１,２,４枚のどれか'
      read(*,*)play
      if(play.eq.1)go to 1
      if(play.eq.2)go to 2
      if(play.eq.4)go to 2
      if(play.ne.1)go to 900

    1 write(*,*) '標高データの地域番号(上４桁)を入れてください。'
      read(*,'(A)') fn1
      write(*,*)'標高データの地域番号(下２桁)を入れてください。'
      read(*,'(A)')fn2
      open(unit=10, file='d:\data\'//fn1//'\'//fn1//fn2//'.mem',
     +          access='direct',form='unformatted',  recl=1011)
      read(10,rec=1) line
      read(line(766:773), '(I3,I2,F3.1)') ydeg, ymin, ysec
      read(line(774:781), '(I3,I2,F3.1)') xdeg, xmin, xsec
      write(*,*) ydeg, ymin, ysec, xdeg, xmin, xsec

      do 11 n=1,200
      read(10,rec=n+1)  line(1:1009)
      read(line, '(i6,i3,200f5.0)') ca(n),da(n),(ea(n,m),m=1,20
     +                                                                0)
   11 continue
      close(10)

      open(unit=77,file='c:\Fortran\data.terrain.bin',access='direct',
     +                 form='unformatted',  recl=800)

      do 12 n=1,200
      write(77,rec=n)(ea(201-n,m)/10,m=1,200)
   12 continue

      close(77)

      go to 900

    2 write(*,*) '左上の標高データの地域番号(４桁)を入れてください。'
      read(*,'(A)') fn3
      write(*,*)'その標高データの地域番号(下２桁)を入れてください。'
      read(*,'(A)')fn4

      open(unit=10, file='d:\data\'//fn3//'\'//fn3//fn4//'.mem', 
     + access='direct',form='unformatted',  recl=1011)
      read(10,rec=1) line
      read(line(766:773), '(I3,I2,F3.1)') ydeg, ymin, ysec
      read(line(774:781), '(I3,I2,F3.1)') xdeg, xmin, xsec
      write(*,*) ydeg, ymin, ysec, xdeg, xmin, xsec

      do 21 n=1,200
      read(10,rec=n+1)  line(1:1009)
      read(line, '(i6,i3,200f5.0)') ca(n),da(n),(ea(n,m),m=1,20
     +                                                                0)
   21 continue
      close(10)

      write(*,*) '右上の標高データの地域番号(４桁)を入れてください。'
      read(*,'(A)') fn5
      write(*,*)'その標高データの地域番号(下２桁)を入れてください。'
      read(*,'(A)')fn6
      open(unit=20, file='d:\data\'//fn5//'\'//fn5//fn6//'.mem',
     + access='direct',form='unformatted',  recl=1011)
      read(20,rec=1) line
      read(line(766:773), '(I3,I2,F3.1)') ydeg, ymin, ysec
      read(line(774:781), '(I3,I2,F3.1)') xdeg, xmin, xsec
      write(*,*) ydeg, ymin, ysec, xdeg, xmin, xsec

      do 22 n=1,200
      read(20,rec=n+1)  line(1:1009)
      read(line, '(i6,i3,200f5.0)') cb(n),db(n),(eb(n,m),m=1,20
     +                                                                0)
   22 continue
      close(20)
      if(play.eq.2)go to 25


      write(*,*) '左下の標高データの地域番号(４桁)を入れてください。'
      read(*,'(A)') fn7
      write(*,*)'その標高データの地域番号(下２桁)を入れてください。'
      read(*,'(A)')fn8

      open(unit=20, file='d:\data\'//fn7//'\'//fn7//fn8//'.mem',
     + access='direct',form='unformatted',  recl=1011)
      read(20,rec=1) line
      read(line(766:773), '(I3,I2,F3.1)') ydeg, ymin, ysec
      read(line(774:781), '(I3,I2,F3.1)') xdeg, xmin, xsec
      write(*,*) ydeg, ymin, ysec, xdeg, xmin, xsec


      do 23 n=1,200
      read(20,rec=n+1)  line(1:1009)
      read(line, '(i6,i3,200f5.0)') cc(n),dc(n),(ec(n,m),m=1,20
     +                                                                0)
   23 continue
      close(20)

      write(*,*) '右下の標高データの地域番号(４桁)を入れてください。'
      read(*,'(A)') fn9
      write(*,*)'その標高データの地域番号(下２桁)を入れてください。'
      read(*,'(A)')fn10

      open(unit=20, file='d:\data\'//fn9//'\'//fn9//fn10//'.mem',
     + access='direct',form='unformatted',  recl=1011)
      read(20,rec=1) line
      read(line(766:773), '(I3,I2,F3.1)') ydeg, ymin, ysec
      read(line(774:781), '(I3,I2,F3.1)') xdeg, xmin, xsec
      write(*,*) ydeg, ymin, ysec, xdeg, xmin, xsec


      do 24 n=1,200
      read(20,rec=n+1)  line(1:1009)
      read(line, '(i6,i3,200f5.0)') cd(n),dd(n),(ed(n,m),m=1,20
     +                                                                0)
   24 continue
      close(20)
      go to 35


   25 open(unit=77,file='c:\Fortran\data.terrain.bin',access='direct',
     +                 form='unformatted',  recl=800)

      write(*,*) '一枚目の接合格子数(横)を入れてください。'
      read(*,*)h
      hh=h+1

      do 26 n=1,200
      write(77,rec=n)(ea(201-n,m)/10,m=hh,200),
     +                       (eb(201-n,m)/10,m=1,h)
   26 continue

      close(77)

      go to 900

   35 open(unit=77,file='c:\Fortran\data.terrain.bin',access='direct',
     +                 form='unformatted',  recl=800)

      write(*,*) '左上の接合格子数(横)を入れてください。'
      read(*,*)h

      write(*,*) '左上の接合格子数(縦)を入れてください。'
      read(*,*)v

      hh=201-h
      vv=200-v
      

      do 41 n=1,vv
      write(77,rec=n)(ec(vv+1-n,m)/10,m=hh,200),
     +                       (ed(vv+1-n,m)/10,m=1,200-h)
   41 continue
   
      do 42 n=vv+1,200
      write(77,rec=n)(ea(201+vv-n,m)/10,m=hh,200),
     +                       (eb(201+vv-n,m)/10,m=1,200-h)
   42 continue
   
   
   
      close(77)
      go to 900


  900 open(unit=77,file='c:\Fortran\data.terrain.bin',access='direct',
     +                 form='unformatted',  recl=800)
      do 53 i=1,200
      read(77,rec=i)(k(i,j),j=1,200)   
   53 continue
      close(77)
      open(unit=78,file='c:\gmt-ground\check\check.dat')
      do 51 i=1,200
      do 52 j=1,200
      write(78,100)j, i, k(i,j)
  100 format(' ',i3,' ',i3,' ',f10.3)
   52 continue
   51 continue
      close(78)
      go to 999
  999 end