Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:37:38 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
7f58e89433 Jean*0001 #include "CPP_OPTIONS.h"
                0002 
bf4b675079 Jean*0003 C--  File mds_byteswap.F: Routines to do IO byte swapping
                0004 C--   Contents
                0005 C--   o MDS_BYTESWAPR4
                0006 C--   o MDS_BYTESWAPR8
                0007 
                0008 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0009 
7f58e89433 Jean*0010       SUBROUTINE MDS_BYTESWAPR4( n, arr )
                0011 C IN:
bf4b675079 Jean*0012 C   n          integer :: Number of 4-byte words in arr
7f58e89433 Jean*0013 C IN/OUT:
bf4b675079 Jean*0014 C   arr        real*4  :: Array declared as real*4(n)
7f58e89433 Jean*0015 C
                0016 C Created: 05/05/99 adcroft@mit.edu (This is an unfortunate hack!!)
                0017 
                0018       IMPLICIT NONE
                0019 C Arguments
                0020       INTEGER n
                0021       CHARACTER*(*) arr
                0022 
                0023 #ifdef _BYTESWAPIO
                0024 
                0025 C Local
                0026       integer i
                0027       character*(1) cc
                0028 C     ------------------------------------------------------------------
                0029       do i=1,4*n,4
                0030        cc=arr(i:i)
                0031        arr(i:i)=arr(i+3:i+3)
                0032        arr(i+3:i+3)=cc
                0033        cc=arr(i+1:i+1)
                0034        arr(i+1:i+1)=arr(i+2:i+2)
                0035        arr(i+2:i+2)=cc
                0036       enddo
                0037 C     ------------------------------------------------------------------
                0038 #endif /* _BYTESWAPIO */
                0039       RETURN
                0040       END
                0041 
bf4b675079 Jean*0042 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0043 
7f58e89433 Jean*0044       SUBROUTINE MDS_BYTESWAPR8( n, arr )
                0045 C IN:
bf4b675079 Jean*0046 C   n          integer :: Number of 8-byte words in arr
7f58e89433 Jean*0047 C IN/OUT:
bf4b675079 Jean*0048 C   arr        real*8  :: Array declared as real*8(n)
7f58e89433 Jean*0049 C
                0050 C Created: 05/05/99 adcroft@mit.edu (This is an unfortunate hack!!)
                0051 
                0052       IMPLICIT NONE
                0053 C Arguments
                0054       INTEGER n
                0055       CHARACTER*(*) arr
                0056 
                0057 #ifdef _BYTESWAPIO
                0058 
                0059 C Local
                0060       integer i
                0061       character*(1) cc
                0062 C     ------------------------------------------------------------------
                0063       do i=1,8*n,8
                0064        cc=arr(i:i)
                0065        arr(i:i)=arr(i+7:i+7)
                0066        arr(i+7:i+7)=cc
                0067        cc=arr(i+1:i+1)
                0068        arr(i+1:i+1)=arr(i+6:i+6)
                0069        arr(i+6:i+6)=cc
                0070        cc=arr(i+2:i+2)
                0071        arr(i+2:i+2)=arr(i+5:i+5)
                0072        arr(i+5:i+5)=cc
                0073        cc=arr(i+3:i+3)
                0074        arr(i+3:i+3)=arr(i+4:i+4)
                0075        arr(i+4:i+4)=cc
                0076       enddo
                0077 C     ------------------------------------------------------------------
                0078 #endif /* _BYTESWAPIO */
                0079       RETURN
                0080       END