c program : SWAP_BYTE_CPC_UNI_GAG_ANAL.lnx.f c objective : sample program to swap the byte order from little_endian c to big_endian for the CPC Unified Daily Gauge Analysis c parameter ( kyy = 2006, kmm = 12, kdd = 31 ) c parameter ( nx = 720, ny = 360 ) c c character cdate*8, cfile10*47, cfile50*47, # cinp*2880, cout*2880 c c 1. to open the input / output data files c kdate = kyy*10000 + kmm*100 + kdd write (cdate,1951) kdate 1951 format (i8) write (6,*) 'started swapping bytes for : ', cdate c cfile10 ( 1: 4) = 'yyyy' cfile10 ( 5:47) = '/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.yyyymmdd' cfile50 ( 1: 4) = 'yyyy' cfile50 ( 5:47) = '/PRCP_CU_GAUGE_V1.0GLB_0.50deg.sgi.yyyymmdd' cfile10 ( 1: 4) = cdate (1:4) cfile10 (40:47) = cdate (1:8) cfile50 ( 1: 4) = cdate (1:4) cfile50 (40:47) = cdate (1:8) c open (unit=10, # file=cfile10, # access='direct', recl=nx*4) open (unit=50, # file=cfile50, # access='direct', recl=nx*4) write (6,*) 'finished opening data files !!' c c 2. to convert c do 2002 kk = 1, 2 do 2002 jj = 1, ny krec = (kk-1)*ny + jj read (10,rec=krec) cinp do 2001 ii = 1, nx i1 = (ii-1)*4 + 1 i2 = (ii-1)*4 + 2 i3 = (ii-1)*4 + 3 i4 = (ii-1)*4 + 4 cout (i1:i1) = cinp (i4:i4) cout (i2:i2) = cinp (i3:i3) cout (i3:i3) = cinp (i2:i2) cout (i4:i4) = cinp (i1:i1) 2001 continue write (50,rec=krec) cout 2002 continue write (6,*) 'finished swapping byte order !!' c c stop end