Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:36:11 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
d7dd491794 Jean*0001 #include "CPP_EEOPTIONS.h"
                0002 
                0003       subroutine MDS_BYTESWAPI4( n, arr )
                0004 C IN:
4d40368441 Jean*0005 C   n      integer    :: Number of 4-byte words in arr
d7dd491794 Jean*0006 C IN/OUT:
4d40368441 Jean*0007 C   arr    integer*4  :: Array declared as integer*4(n)
d7dd491794 Jean*0008 C
                0009 C Created: 05/05/99 adcroft@mit.edu (This is an unfortunate hack!!)
                0010 
                0011       implicit none
9c4e526255 Dimi*0012 
                0013 #ifdef FAST_BYTESWAP
                0014 
                0015 C Arguments
                0016       integer n
                0017       integer(kind=4) arr(n), i32
                0018 
                0019 C Local
                0020       integer i
                0021 
                0022       i32(i) = ishft(i.and. z'ff000000', -24) .or.
                0023      &         ishft(i.and. z'00ff0000',  -8) .or.
                0024      &         ishft(i.and. z'0000ff00',   8) .or.
                0025      &         ishft(i.and. z'000000ff',  24)
                0026       do i = 1,n
                0027       arr(i) = i32(arr(i))
                0028       enddo
                0029 
                0030 #else /* FAST_BYTESWAP */
                0031 
d7dd491794 Jean*0032 C Arguments
                0033       integer n
                0034       character*(*) arr
9c4e526255 Dimi*0035 
d7dd491794 Jean*0036 C Local
                0037       integer i
                0038       character*(1) cc
9c4e526255 Dimi*0039 
d7dd491794 Jean*0040       do i=1,4*n,4
                0041        cc=arr(i:i)
                0042        arr(i:i)=arr(i+3:i+3)
                0043        arr(i+3:i+3)=cc
                0044        cc=arr(i+1:i+1)
                0045        arr(i+1:i+1)=arr(i+2:i+2)
                0046        arr(i+2:i+2)=cc
                0047       enddo
9c4e526255 Dimi*0048 
                0049 #endif /* FAST_BYTESWAP */
                0050 
d7dd491794 Jean*0051       return
                0052       end