diff --git a/docs/utils.md b/docs/utils.md index 16bbb047..b27cdafa 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -294,6 +294,21 @@ TOTAL 6823 774888 67232740 Utility to print an inventory of satellite data by platform and instrument type. +
+Usage:
+
+   sinv satbufrfile [tabledir]
+
+     where:
+
+       satbufrfile  [path/]name of BUFR satellite data file to be decoded
+
+       tabledir     [path/]name of directory containing master BUFR tables.
+                    If unspecified, the default directory location is
+                    the defined value of the MASTER_TABLE_DIR macro when the
+                    utility was built.
+
+ See the source code at sinv.F90 Sample output for: `sinv gdas.20200812/00/gdas.t00z.satwnd.tm00.bufr_d` diff --git a/src/dxtable.F90 b/src/dxtable.F90 index 44b90cd5..f19d9ed9 100644 --- a/src/dxtable.F90 +++ b/src/dxtable.F90 @@ -641,9 +641,7 @@ subroutine dxinit(lun,ioi) enddo ntbb(lun) = 0 - do i=1,ntbb(0) - tabb(i,lun) = ' ' - enddo + tabb(1:ntbb(0),lun) = ' ' ntbd(lun) = 0 do i=1,ntbd(0) @@ -713,9 +711,7 @@ subroutine dxmini(mbay,mbyt,mb4,mba,mbb,mbd) ! Initialize the message mbit = 0 - do i=1,mxmsgld4 - mbay(i) = 0 - enddo + mbay(1:mxmsgld4) = 0 ! For DX table messages, the Section 1 date is simply zeroed out. Note that there is logic in function idxmsg() ! which relies on this. diff --git a/src/jumplink.F90 b/src/jumplink.F90 index 94015d27..366b06e3 100644 --- a/src/jumplink.F90 +++ b/src/jumplink.F90 @@ -34,7 +34,7 @@ subroutine makestab implicit none - integer iprt, lunit, lundx, lun, lum, k, n, itba, inc, newn, noda, node, inod, icmpdx, ishrdx + integer iprt, lunit, lundx, lun, lum, n, itba, inc, newn, noda, node, inod, icmpdx, ishrdx character*128 bort_str, errstr character*8 nemo @@ -206,9 +206,7 @@ subroutine makestab ! Set up expansion segments for type 'SUB', 'DRP', and 'DRS' nodes. newn = 0 - do k=1,maxjl - knt(k) = 0 - enddo + knt(1:maxjl) = 0 do n=1,ntab iseq(n,1) = 0 iseq(n,2) = 0 diff --git a/src/memmsgs.F90 b/src/memmsgs.F90 index 5b6431aa..bbaa3288 100644 --- a/src/memmsgs.F90 +++ b/src/memmsgs.F90 @@ -1119,7 +1119,7 @@ recursive subroutine ufbtam(tab,i1,i2,iret,str) integer*8 mps, ival integer, intent(in) :: i1, i2 integer, intent(out) :: iret - integer iprt, maxtg, nnod, ncon, nods, nodc, ivls, kons, my_i1, my_i2, i, j, irec, isub, itbl, lun, il, im, jdate, mret, & + integer iprt, maxtg, nnod, ncon, nods, nodc, ivls, kons, my_i1, my_i2, i, irec, isub, itbl, lun, il, im, jdate, mret, & kbit, mbit, nbit, n, node, imsg, kmsg, nrep, ntg, nbyt, nbmp, nmsub real*8, intent(out) :: tab(i1,i2) @@ -1153,11 +1153,7 @@ recursive subroutine ufbtam(tab,i1,i2,iret,str) if(msgp(0)==0) return - do j=1,i2 - do i=1,i1 - tab(i,j) = bmiss - enddo - enddo + tab(1:i1,1:i2) = bmiss ! Check for special tags in string diff --git a/src/openclosebf.F90 b/src/openclosebf.F90 index d7f2523c..506d44ad 100644 --- a/src/openclosebf.F90 +++ b/src/openclosebf.F90 @@ -874,7 +874,7 @@ recursive subroutine ufbtab(lunin,tab,i1,i2,iret,str) integer, intent(in) :: lunin, i1, i2 integer, intent(out) :: iret integer, parameter :: maxtg = 100 - integer nnod, ncon, nods, nodc, ivls, kons, iprt, my_lunin, my_i1, my_i2, lunit, lun, il, im, irec, isub, i, j, n, ntg, & + integer nnod, ncon, nods, nodc, ivls, kons, iprt, my_lunin, my_i1, my_i2, lunit, lun, il, im, irec, isub, i, n, ntg, & jdate, jbit, kbit, lbit, mbit, nbit, nibit, nbyt, nsb, node, nbmp, nrep, lret, linc, iac_prev, ityp, & ireadmg, ireadsb, nmsub @@ -927,11 +927,7 @@ recursive subroutine ufbtab(lunin,tab,i1,i2,iret,str) endif ! Initialize all of the output array values to the current value for "missing" - do j=1,i2 - do i=1,i1 - tab(i,j) = bmiss - enddo - enddo + tab(1:i1,1:i2) = bmiss ! Set counters to zero iret = 0 diff --git a/src/readwritesb.F90 b/src/readwritesb.F90 index 3715438c..5c9eac34 100644 --- a/src/readwritesb.F90 +++ b/src/readwritesb.F90 @@ -1183,10 +1183,7 @@ subroutine rcstpl(lun,iret) mbmp = 1 nval(lun) = 1 nr = 0 - - do i=1,maxrcr - knx(i) = 0 - enddo + knx(1:maxrcr) = 0 outer: do while (.true.) diff --git a/src/readwriteval.F90 b/src/readwriteval.F90 index 2077542a..cefaa74d 100644 --- a/src/readwriteval.F90 +++ b/src/readwriteval.F90 @@ -658,7 +658,7 @@ recursive subroutine ufbint(lunin,usr,i1,i2,iret,str) integer, intent(in) :: lunin, i1, i2 integer, intent(out) :: iret - integer iprt, nnod, ncon, nods, nodc, ivls, kons, ifirst1, ifirst2, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, i, j + integer iprt, nnod, ncon, nods, nodc, ivls, kons, ifirst1, ifirst2, my_lunin, my_i1, my_i2, lunit, lun, il, im, io common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10) common /quiet/ iprt @@ -728,13 +728,7 @@ recursive subroutine ufbint(lunin,usr,i1,i2,iret,str) call string(str,lun,i1,io) ! Initialize usr array preceeding an input operation - if(io==0) then - do j=1,i2 - do i=1,I1 - usr(i,j) = bmiss - enddo - enddo - endif + if(io==0) usr(1:i1,1:i2) = bmiss ! Call the mnemonic reader/writer call ufbrw(lun,usr,i1,i2,io,iret) @@ -898,7 +892,7 @@ recursive subroutine ufbrep(lunin,usr,i1,i2,iret,str) integer, intent(in) :: lunin, i1, i2 integer, intent(out) :: iret - integer iprt, ifirst1, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, iac_prev, i, j + integer iprt, ifirst1, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, iac_prev common /quiet/ iprt @@ -964,13 +958,7 @@ recursive subroutine ufbrep(lunin,usr,i1,i2,iret,str) endif ! Initialize usr array preceeding an input operation - if(io==0) then - do j=1,i2 - do i=1,i1 - usr(i,j) = bmiss - enddo - enddo - endif + if(io==0) usr(1:i1,1:i2) = bmiss ! Parse or recall the input string iac_prev = iac @@ -1111,7 +1099,7 @@ recursive subroutine ufbstp(lunin,usr,i1,i2,iret,str) integer, intent(in) :: lunin, i1, i2 integer, intent(out) :: iret - integer iprt, ifirst1, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, i, j + integer iprt, ifirst1, my_lunin, my_i1, my_i2, lunit, lun, il, im, io common /quiet/ iprt @@ -1177,13 +1165,7 @@ recursive subroutine ufbstp(lunin,usr,i1,i2,iret,str) endif ! Initialize usr array preceeding an input operation - if(io==0) then - do j=1,i2 - do i=1,I1 - usr(i,j) = bmiss - enddo - enddo - endif + if(io==0) usr(1:i1,1:i2) = bmiss ! Parse or recall the input string call string(str,lun,i1,io) @@ -1415,13 +1397,7 @@ recursive subroutine ufbseq(lunin,usr,i1,i2,iret,str) 'BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY') ! Initialize usr array preceeding an input operation - if(io==0) then - do j=1,i2 - do i=1,I1 - usr(i,j) = bmiss - enddo - enddo - endif + if(io==0) usr(1:i1,1:i2) = bmiss ! Find the parameters of the specified sequence outer: do node=inode(lun),isc(inode(lun)) @@ -2345,14 +2321,7 @@ recursive subroutine ufbevn(lunit,usr,i1,i2,i3,iret,str) call string(str,lun,i1,0) ! Initialize usr array - - do k=1,i3 - do j=1,i2 - do i=1,i1 - usr(i,j,k) = bmiss - enddo - enddo - enddo + usr(1:i1,1:i2,1:i3) = bmiss ! Loop over condition windows @@ -2583,10 +2552,7 @@ recursive subroutine ufbget(lunit,tab,i1,iret,str) endif iret = 0 - - do i=1,i1 - tab(i) = bmiss - enddo + tab(1:i1) = bmiss ! Make sure a file/message is open for input diff --git a/test/test_scripts/test_sinv.sh b/test/test_scripts/test_sinv.sh index bb1d965c..8eb62764 100755 --- a/test/test_scripts/test_sinv.sh +++ b/test/test_scripts/test_sinv.sh @@ -31,7 +31,7 @@ set +e # Test #3, for wrong number of arguments. outfile_3=testrun/sinv_3.out ../utils/sinv > ${outfile_3} -[[ ${?} -ne 2 || `grep -c "Usage: sinv " ${outfile_3}` -ne 1 ]] && exit 3 +[[ ${?} -ne 2 || `grep -c "Usage: sinv satbufrfile" ${outfile_3}` -ne 1 ]] && exit 3 # Success! exit 0 diff --git a/utils/sinv.F90.in b/utils/sinv.F90.in index a3569b52..8e6d886a 100644 --- a/utils/sinv.F90.in +++ b/utils/sinv.F90.in @@ -3,7 +3,9 @@ !> !> @author J Woollen @date 2010 -!> Usage: sinv \ will print inventory of satellites by platform and instrument. +!> Usage: sinv satbufrfile \ will print an inventory of satellites in the +!> satbufrfile by platform and instrument. The optional tabledir argument can be used +!> to specify a custom directory for the master BUFR tables. !> !> @return 0 for success, error message otherwise. !> @@ -35,7 +37,7 @@ program sinv narg=command_argument_count() if(narg<1) then - write(*,*)'Usage: sinv will print inventory of satellites by platform and instrument' + write(*,*)'Usage: sinv satbufrfile will print inventory of satbufrfile by platform and instrument' call exit(2) endif call get_command_argument(1,file)