integer*2 record(256) character*40 name character*44 newfile c hdb This program needs to be compiled and executed on a unix or vms machine c in order to convert a vms or unix file respectively. The old file is c over-written. integer extent(3),grid(3),origin(3),plus integer isca1, isca2 real cell(6) write(6,4) 4 format('Brick file : ',$) read(5,6)name 6 format(a40) write(newfile,'(4hunix,a40)')name open(1,file=name,access='direct',recl=128,status='old') open(2,file=newfile,access='direct',recl=128,status='unknown') ir=0 10 ir=ir+1 read(1,rec=ir,err=80)record 99 format(10i7) call bytswp(record) write(2,rec=ir)record nw=ir if(ir.ne.1)go to 10 isca1 = record(18) isca2 = record(19) if (isca1 .eq. 0) isca1 = 100 if (isca2 .eq. 0) isca2 = 100 do 20 i=1,3 origin(i) = record(i) extent(i) = record(i+3) grid (i) = record(i+6) cell (i) = float(record(i+9))/isca1 20 cell(i+3) = float(record(i+12))/isca1 prod = float(record(16))/isca2 plus = record(17) inx = extent(1)/8 if(mod(extent(1),8) .ge. 1)inx = inx+1 iny = extent(2)/8 if(mod(extent(2),8) .ge. 1)iny = iny+1 inz = extent(3)/8 if(mod(extent(3),8) .ge. 1)inz = inz+1 write(6,30)origin,extent,grid,cell,prod,plus,inx,iny,inz 30 format(' origin ',3i5,/, $ ' extent ',3i5,/, $ ' grid ',3i5,/, $ ' cell ',6f7.2,/, $ ' prod/plus ',f7.2,i5,/, $ ' cubies in x,y,z',3i5) nr=(inx*iny*inz)+1 go to 10 80 write(6,90)nw 90 format('Total number of records written = ',i5) stop end subroutine bytswp (rec) implicit none byte rec(2,256), one integer i do 100 i=1,256 one = rec (1,i) rec(1,i) = rec(2,i) 100 rec(2,i) = one return end