Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix warnings about rdieee()/mkieee() #637

Merged
merged 14 commits into from
Mar 11, 2024
4 changes: 2 additions & 2 deletions src/g2bytes.F90
Original file line number Diff line number Diff line change
Expand Up @@ -474,8 +474,8 @@ subroutine rdieee(rieee, a, num)
integer, intent(in) :: num

integer(4) :: ieee
real, parameter :: two23 = scale(1.0,-23)
real, parameter :: two126 = scale(1.0,-126)
real, parameter :: two23 = scale(1.0, -23)
real, parameter :: two126 = scale(1.0, -126)
integer :: iexp, imant, isign, j
real :: sign, temp

Expand Down
12 changes: 7 additions & 5 deletions src/g2create.F90
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ subroutine addfield(cgrib,lcgrib,ipdsnum,ipdstmpl,ipdstmplen, &
character(len=4):: ctemp
character(len=1),allocatable :: cpack(:)
real,pointer,dimension(:) :: pfld
real(4) :: coordieee(numcoord),re00
real(4) :: coordieee(numcoord), re00, tmpre00(1)
integer(4) :: ire00,allones
integer :: mappds(ipdstmplen),intbmap(ngrdpts),mapdrs(idrstmplen)
integer,parameter :: zero=0,one=1,four=4,five=5,six=6,seven=7
Expand All @@ -216,6 +216,7 @@ subroutine addfield(cgrib,lcgrib,ipdsnum,ipdstmpl,ipdstmplen, &
integer :: ibmprev, ilen, ioctet, iscan, isecnum, itemp
integer :: i, jj, kk, mm
integer :: iret, istat
real (kind = 4) :: tmpfld(1)

allones = int(Z'FFFFFFFF')
ierr=0
Expand Down Expand Up @@ -398,10 +399,11 @@ subroutine addfield(cgrib,lcgrib,ipdsnum,ipdstmpl,ipdstmplen, &
call cmplxpack(pfld,ndpts,idrsnum,idrstmpl,cpack,lcpack)
elseif (idrsnum.eq.50) then ! Sperical Harmonic Simple Packing
call simpack(pfld(2),ndpts-1,idrstmpl,cpack,lcpack)
call mkieee(real(pfld(1)),re00,1) ! ensure RE(0,0) value is IEEE format
!call g2_gbytec(re00,idrstmpl(5),0,32)
ire00=transfer(re00,ire00)
idrstmpl(5)=ire00
tmpfld(1) = real(pfld(1), 4)
call mkieee(tmpfld, tmpre00, 1) ! ensure RE(0,0) value is IEEE format
re00 = tmpre00(1)
ire00 = transfer(re00, ire00)
idrstmpl(5) = ire00
elseif (idrsnum.eq.51) then ! Sperical Harmonic Complex Packing
call getpoly(cgrib(lpos3),lensec3,jj,kk,mm)
if (jj.ne.0 .AND. kk.ne.0 .AND. mm.ne.0) then
Expand Down
4 changes: 2 additions & 2 deletions src/g2get.F90
Original file line number Diff line number Diff line change
Expand Up @@ -520,7 +520,7 @@ subroutine getfield(cgrib, lcgrib, ifldnum, igds, igdstmpl, &
character(len = 4) :: ctemp
integer :: listsec0(2)
integer :: iofst, istart
integer(4) :: ieee
real (kind = 4) :: ieee(1)
logical :: have3, have4, have5, have6, have7

!implicit none additions
Expand Down Expand Up @@ -682,7 +682,7 @@ subroutine getfield(cgrib, lcgrib, ifldnum, igds, igdstmpl, &
elseif (idrsnum .eq. 50) then
call simunpack(cgrib(ipos + 5), lensec - 6, idrstmpl, &
ndpts - 1, fld(2))
ieee = idrstmpl(5)
ieee = transfer(idrstmpl(5), ieee, 1)
call rdieee(ieee, fld(1), 1)
have7 = .true.
elseif (idrsnum .eq. 40 .or. idrsnum .eq. 40000) then
Expand Down
9 changes: 6 additions & 3 deletions src/g2unpack.F90
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,9 @@ subroutine gf_unpack7(cgrib, lcgrib, iofst, igdsnum, igdstmpl, &
integer, pointer, dimension(:) :: igdstmpl, idrstmpl
integer, intent(out) :: ierr
real, pointer, dimension(:) :: fld
integer :: ier, ipos, istat, lensec, ieee
integer :: ier, ipos, istat, lensec
real (kind = 4) :: ieee(1)
real :: tmpfld(1)

ierr = 0
nullify(fld)
Expand All @@ -682,8 +684,9 @@ subroutine gf_unpack7(cgrib, lcgrib, iofst, igdsnum, igdstmpl, &
endif
elseif (idrsnum .eq. 50) then ! Spectral simple
call simunpack(cgrib(ipos), lensec-5, idrstmpl, ndpts-1, fld(2))
ieee = idrstmpl(5)
call rdieee(ieee, fld(1), 1)
ieee = transfer(idrstmpl(5), ieee, 1)
call rdieee(ieee, tmpfld, 1)
fld(1) = tmpfld(1)
elseif (idrsnum .eq. 51) then ! Spectral complex
if (igdsnum.ge.50.AND.igdsnum.le.53) then
call specunpack(cgrib(ipos), lensec-5, idrstmpl, ndpts, &
Expand Down
Loading