Page 1 Source Listing BUFR_TRANQUIK 2012-11-20 14:07 tranquik.f 1 PROGRAM BUFR_TRANQUIK 2 C$$$ MAIN PROGRAM DOCUMENTATION BLOCK 3 C 4 C MAIN PROGRAM: BUFR_TRANQUIK 5 C PRGMMR: Y. LING ORG: NP22 DATE: 2012-11-16 6 C 7 C ABSTRACT: READS IN WMO BUFR MESSAGES FROM ORBIT-BY-ORBIT FILES, 8 C DECODES EACH SUBSET (REPORT) AND CHECKS ITS DATE FOR REALISM, THEN 9 C PACKS IT PACK INTO AN OUTPUT NCEP BUFR FILE. CURRENTLY APPLIES TO 10 C QUIKSCAT AND ASCAT DATA FILES. 11 C 12 C PROGRAM HISTORY LOG: 13 C 2000-04-11 BERT B. KATZ - ORIGINAL AUTHOR 14 C 2003-01-16 D. KEYSER - REPLACED CALL TO IREADERS WITH CALL TO 15 C IREADSB; REPLACED CALLS TO BORT WITH CALLS TO ERREXIT 16 C 2006-02-02 D. KEYSER - REPLACED CALL TO BUFRLIB ROUTINE IREADIBM 17 C WITH CALL TO BUFRLIB ROUTINE IREADMG (IREADIBM OBSOLETE WITH 18 C 1/31/2006 VERSION OF BUFRLIB) 19 C 2012-11-16 Y. Ling/D. Keyser Changes to run on WCOSS (e.g., 20 C replaced all real declarations with real(8) for types in ufbxxx 21 C calls). 22 C 23 C USAGE: 24 C 25 C INPUT FILES: 26 C UNIT 05 - STANDARD INPUT. W3TRNARG PARSES ARGUMENTS FROM 27 C - STANDARD INPUT. 28 C UNIT 11 - WMO BUFR FILE (NORMALLY CONTAINING AN ORBIT OR PART 29 C THEREOF) 30 C UNIT 20 - EXTERNAL NCEP BUFR MNEMONIC TABLE 31 C 32 C OUTPUT FILES: 33 C UNIT 06 - PRINTOUT 34 C UNIT 51 - NCEP BUFR FILE 35 C 36 C SUBPROGRAMS CALLED: 37 C LIBRARY: 38 C BUFRLIB - OPENBF OPENMG CLOSMG UFBINT UFBCPY WRITSB 39 C - READMG IREADSB 40 C W3NCO - W3TAGB W3TAGE W3TRNARG ERREXIT 41 C 42 C EXIT STATES: 43 C COND = 0 - SUCCESSFUL RUN 44 C = 1 - UNABLE TO PARSE INPUT ARGUMENTS IN W3TRNARG 45 C = 49 - ERROR READING SYSTEM DATE OR TIME 46 C 47 C ATTRIBUTES: 48 C LANGUAGE: FORTRAN 90 49 C MACHINE: NCEP WCOSS 50 C 51 C$$$ 52 C----------------------------------------------------------------------- 53 54 CHARACTER*8 RDATE,RTIME,SUBSET 55 CHARACTER*6 CDATE 56 CHARACTER*3 MTYP,MSBT 57 Page 2 Source Listing BUFR_TRANQUIK 2012-11-20 14:07 tranquik.f 58 CHARACTER*12 SUBDIR,TANKID 59 CHARACTER*80 APPCHR 60 CHARACTER*8 TLFLAG 61 62 REAL(8) DATES(6) 63 LOGICAL WROTJM 64 65 DATA LUNIN /11/ 66 DATA LUNDX /20/ 67 DATA LUNOT /51/ 68 69 C----------------------------------------------------------------------- 70 CALL W3TAGB('BUFR_TRANQUIK',2012,0321,0061,'NP22') 71 PRINT *, ' ' 72 PRINT *, ' ==> Welcome to BUFR_TRANQUIK -- Version 11/16/2012' 73 PRINT *, ' ' 74 CALL W3TRNARG(SUBDIR,LSUBDR,TANKID,LTNKID,APPCHR,LAPCHR, 75 1 TLFLAG,JDATE,KDATE,IERR) 76 IF(IERR.NE.0) THEN 77 WRITE(6,'('' UNABLE TO PARSE ARGS TO TRANSLATION ROUTINE - '', 78 1 '' RETURN CODE = '',I5)') IERR 79 CALL W3TAGE('BUFR_TRANQUIK') 80 CALL ERREXIT(IERR) 81 ENDIF 82 C----------------------------------------------------------------------- 83 84 IRD = 0 85 IWT = 0 86 87 C OPEN AND READ THRU THE INPUT BUFR FILE 88 C -------------------------------------- 89 90 CALL OPENBF(LUNIN,'IN',LUNDX) 91 ccccc CALL OPENBF(LUNOT,'OUT',LUNIN) 92 CALL OPENBF(LUNOT,'NODX',LUNIN) 93 94 C READ THROUGH THE MESSAGES/SUBSETS IN THE FILE 95 C --------------------------------------------- 96 97 DO WHILE(IREADMG(LUNIN,SUBSET,IDATE).EQ.0) 98 IF(IRD.EQ.0) CALL OPENMG(LUNOT,SUBSET,IDATE) 99 DO WHILE(IREADSB(LUNIN).EQ.0) 100 101 C READ THE INTERNAL DATE AND CHECK FOR REALISM 102 C -------------------------------------------- 103 104 CALL UFBINT(LUNIN,DATES,6,1,IRET,'YEAR MNTH DAYS HOUR MINU SECO') 105 IYR = NINT(DATES(1)) 106 MON = NINT(DATES(2)) 107 IDAY = NINT(DATES(3)) 108 IHR = NINT(DATES(4)) 109 IF(IBFMS(DATES(5)).EQ.0) THEN 110 MIN = NINT(DATES(5)) 111 ELSE 112 MIN = 0 113 ENDIF 114 IRD = IRD+1 Page 3 Source Listing BUFR_TRANQUIK 2012-11-20 14:07 tranquik.f 115 116 C CHECK FOR REPORT WITHIN THE TRANSLATION WINDOW 117 C ---------------------------------------------- 118 119 IDATE = IYR*1000000 + MON*10000 + IDAY*100 + IHR 120 121 IERR = 0 122 IF(IYR.LT.0 .OR. IYR.GT.9999 .OR. 123 . MON.LT.1 .OR. MON.GT.12 .OR. 124 . IDAY.LT.1 .OR. IDAY.GT.31 .OR. 125 . IHR.LT.0 .OR. IHR.GT.24 .OR. 126 . MIN.LT.0 .OR. MIN.GT.60) THEN 127 PRINT '("BAD DATE:",I4.4,3I2.2," SUBSET:",A8)', 128 . IYR,MON,IDAY,IHR,SUBSET 129 IERR = 1 130 ELSE IF(TLFLAG.EQ.'TIMLIM ') THEN 131 IF(JDATE.LT.KDATE .AND. 132 . (IDATE.LE.JDATE .OR. IDATE.GE.KDATE)) THEN 133 PRINT '("BAD DATE:",I4.4,3I2.2," SUBSET:",A8)', 134 . IYR,MON,IDAY,IHR,SUBSET 135 IERR = 1 136 ELSE IF(JDATE.GT.KDATE .AND. 137 . IDATE.LE.JDATE .AND. IDATE.GE.KDATE) THEN 138 PRINT '("BAD DATE:",I4.4,3I2.2," SUBSET:",A8)', 139 . IYR,MON,IDAY,IHR,SUBSET 140 IERR = 1 141 ENDIF 142 ENDIF 143 144 C WRITE A SUBSET 145 C -------------- 146 147 IF(IERR.EQ.0) THEN 148 CALL UFBCPY(LUNIN,LUNOT) 149 CALL WRITSB(LUNOT) 150 IWT = IWT+1 151 ENDIF 152 153 ENDDO 154 ENDDO 155 156 C WHEN FINISHED MAKE SURE ALL BUFFERS ARE FLUSHED THEN EXIT 157 C --------------------------------------------------------- 158 159 100 CONTINUE 160 CALL CLOSBF(LUNOT) 161 PRINT*,'*** PROCESSING ENDED NORMALLY ***' 162 PRINT*,'*** READ :',IRD 163 PRINT*,'*** WROTE:',IWT 164 PRINT*,'*** PROCESSING ENDED NORMALLY ***' 165 CALL W3TAGE('BUFR_TRANQUIK') 166 STOP 167 900 CONTINUE 168 PRINT *, 'BUFR_TRANQUIK: ERROR READING SYSTEM DATE' 169 CALL W3TAGE('BUFR_TRANQUIK') 170 CALL ERREXIT(49) 171 901 CONTINUE Page 4 Source Listing BUFR_TRANQUIK 2012-11-20 14:07 tranquik.f 172 PRINT *, 'BUFR_TRANQUIK: ERROR READING SYSTEM TIME' 173 CALL W3TAGE('BUFR_TRANQUIK') 174 CALL ERREXIT(49) 175 END ENTRY POINTS Name MAIN__ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 100 Label 159 900 Label 167 901 Label 171 APPCHR Local 59 CHAR 80 scalar 74 BUFR_TRANQUIK Prog 1 CDATE Local 55 CHAR 6 scalar CLOSBF Subr 160 160 DATES Local 62 R(8) 8 1 6 104,105,106,107,108,109,110 ERREXIT Subr 80 80,170,174 IBFMS Func 109 I(4) 4 scalar 109 IDATE Local 97 I(4) 4 scalar 97,98,119,132,137 IDAY Local 107 I(4) 4 scalar 107,119,124,128,134,139 IERR Local 75 I(4) 4 scalar 75,76,78,80,121,129,135,140,147 IHR Local 108 I(4) 4 scalar 108,119,125,128,134,139 IRD Local 84 I(4) 4 scalar 84,98,114,162 IREADMG Func 97 I(4) 4 scalar 97 IREADSB Func 99 I(4) 4 scalar 99 IRET Local 104 I(4) 4 scalar 104 IWT Local 85 I(4) 4 scalar 85,150,163 IYR Local 105 I(4) 4 scalar 105,119,122,128,134,139 JDATE Local 75 I(4) 4 scalar 75,131,132,136,137 KDATE Local 75 I(4) 4 scalar 75,131,132,136,137 LAPCHR Local 74 I(4) 4 scalar 74 LSUBDR Local 74 I(4) 4 scalar 74 LTNKID Local 74 I(4) 4 scalar 74 LUNDX Local 66 I(4) 4 scalar 66,90 LUNIN Local 65 I(4) 4 scalar 65,90,92,97,99,104,148 LUNOT Local 67 I(4) 4 scalar 67,92,98,148,149,160 MIN Local 110 I(4) 4 scalar 110,112,126 MON Local 106 I(4) 4 scalar 106,119,123,128,134,139 MSBT Local 56 CHAR 3 scalar MTYP Local 56 CHAR 3 scalar NINT Func 105 scalar 105,106,107,108,110 OPENBF Subr 90 90,92 OPENMG Subr 98 98 RDATE Local 54 CHAR 8 scalar RTIME Local 54 CHAR 8 scalar SUBDIR Local 58 CHAR 12 scalar 74 SUBSET Local 54 CHAR 8 scalar 97,98,128,134,139 TANKID Local 58 CHAR 12 scalar 74 Page 5 Source Listing BUFR_TRANQUIK 2012-11-20 14:07 Symbol Table tranquik.f Name Object Declared Type Bytes Dimen Elements Attributes References TLFLAG Local 60 CHAR 8 scalar 75,130 UFBCPY Subr 148 148 UFBINT Subr 104 104 W3TAGB Subr 70 70 W3TAGE Subr 79 79,165,169,173 W3TRNARG Subr 74 74 WRITSB Subr 149 149 WROTJM Local 63 L(4) 4 scalar Page 6 Source Listing BUFR_TRANQUIK 2012-11-20 14:07 Subprograms/Common Blocks tranquik.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References BUFR_TRANQUIK Prog 1 COMPILER OPTIONS BEING USED -align nocommons -align nodcommons -align noqcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume nobyterecl -assume nocc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_unit_star -assume noold_ldout_format -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume nostd_mod_proc_name -assume norealloc_lhs -assume underscore -assume no2underscores no -auto -auto_scalar no -bintext -ccdefault default -check noargs -check noarg_temp_created -check nobounds -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check power -check noshape -check nounderflow -check nouninitialized -coarray-num-procs 0 no -coarray-config-file -convert big_endian -cross_reference -D __INTEL_COMPILER=1210 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ -D _MT -D __INTEL_COMPILER_BUILD_DATE=20120612 -D __i686 -D __i686__ -D __pentiumpro -D __pentiumpro__ -D __pentium4 -D __pentium4__ -D __tune_pentium4__ -D __SSE2__ -D __SSE__ -D __MMX__ -double_size 64 no -d_lines no -Qdyncom -error_limit 30 no -f66 no -f77rtl no -fast -fpscomp nofilesfromcmd -fpscomp nogeneral -fpscomp noioformat -fpscomp noldio_spacing -fpscomp nologicals -fixed no -fpconstant -fpe3 -fprm nearest Page 7 Source Listing BUFR_TRANQUIK 2012-11-20 14:07 tranquik.f no -ftz -fp_model noprecise -fp_model fast -fp_model nostrict -fp_model nosource -fp_model nodouble -fp_model noextended -fp_model novery_fast -fp_model noexcept -fp_model nono_except -heap_arrays 0 no -threadprivate_compat -g0 -iface nomixed_str_len_arg -iface nono_mixed_str_len_arg no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude -O2 no -pad_source -real_size 64 no -recursive -reentrancy none no -sharable_localsaves -vec=simd -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w noargument_checking -w nodeclarations -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage -includepath : /gpfs/tp2/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/,.f,./.f,/usrx/local/intel/composerxe/mkl/include/.f, /usrx/local/intel/composerxe/tbb/include/.f,/gpfs/tp2/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/intel64/.f, /gpfs/tp2/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/.f,/usr/local/include/.f,/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/.f, /usr/include/.f,/usr/include/.f -list filename : tranquik.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100