c ************************************************************* program translate c ************************************************************* c Translates the Peltier ice topography files from asciispecial c format to a chosen output format. integer idat(180,360) real xlons(360),xlats(180) character*60 info character*5 trash character*20 infile,outfile character*5000 big character*79 stline character*50 frmt1 write (*,*) ' ' write (*,*) ' Enter no. of files to process: ' write (*,*) ' ' read (*,*) ntot write (*,*) ' ' write (*,*) ' Enter output file format, e.g. (180i1): ' write (*,*) ' ' read (*,17) frmt1 c ----------------------------------------------------------------- do 200 nf=1,ntot,1 c ----------------------------------------------------------------- write (*,*) ' ' write (*,*) ' Enter input filename: ' write (*,*) ' ' read (*,17) infile 17 format (a) open (7,file=infile,status='old') c Read first blank line. read (7,17) trash c Read information on second line. read (7,17) info c Read rest of header stuff. do 10 i=1,5,1 read (7,17) trash 10 continue c Read latitudes. do 20 i=1,24,1 read (7,17) stline nst = (i-1)*79 + 1 nfi = nst + 78 big(nst:nfi) = stline(1:79) 20 continue cc If file tmp.d already exists, delete it. c open (12,file='tmp.d',status='new',recl=5000,err=30) c 30 close (12,disp='delete') open (12,file='tmp.d',status='unknown',recl=5000) write (12,31) big(1:nfi) 31 format (a5000) close (12) open (12,file='tmp.d',status='unknown',recl=5000) read (12,*) (xlats(j),j=1,180,1) close (12,disp='delete') c Read longitudes. do 50 i=1,50,1 read (7,17) stline nst = (i-1)*79 + 1 nfi = nst + 78 big(nst:nfi) = stline(1:79) 50 continue cc If file tmp.d already exists, delete it. c open (12,file='tmp.d',status='new',recl=5000,err=60) c 60 close (12,disp='delete') c Open file tmp.d. open (12,file='tmp.d',status='unknown',recl=5000) c Write string to file tmp.d. write (12,31) big(1:nfi) close (12) open (12,file='tmp.d',status='unknown',recl=5000) read (12,*) (xlats(j),j=1,360,1) c Delete file tmp.d. close (12,disp='delete') c Read data. do 150 ilon=1,180,1 do 80 i=1,10,1 read (7,17) stline nst = (i-1)*79 + 1 nfi = nst + 78 big(nst:nfi) = stline(1:79) 80 continue cc If file tmp.d already exists, delete it. c open (12,file='tmp.d',status='new',recl=5000,err=90) c 90 close (12,disp='delete') c Open file tmp.d. open (12,file='tmp.d',status='unknown',recl=5000) c Write string to file tmp.d. write (12,31) big(1:nfi) close (12) open (12,file='tmp.d',status='unknown',recl=5000) read (12,*) (idat(ilon,j),j=1,360,1) c Delete file tmp.d. close (12,disp='delete') c write (*,101) ilon,(idat(ilon,j),j=1,40) c 101 format (1x,i3,1x,(40i1)) c write (*,102) big(1:40) c 102 format (1x,'big',1x,a40) 150 continue close (7) write (*,*) ' ' write (*,*) ' Enter output filename: ' write (*,*) ' ' read (*,17) outfile open (6,file=outfile,status='new') c write (6,17) info do 160 i=1,180,1 write (6,frmt1) (idat(i,j),j=1,360,1) 160 continue close (6) c ---------------------------------------------------------------- 200 continue c ---------------------------------------------------------------- stop end